Skip to content

Commit d89c714

Browse files
committed
error won't halt script execution anymore
1 parent a01af8f commit d89c714

File tree

1 file changed

+21
-17
lines changed

1 file changed

+21
-17
lines changed

vueify.js

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,13 @@ function importModule(url) {
6767
* @param {string} url
6868
* @param {function(string)} callback
6969
*/
70-
function getContent(url, callback) {
70+
function getContent(url, callback, error) {
7171
var xhr = new XMLHttpRequest();
7272
xhr.onload = function() {
7373
if (xhr.status>=200 && xhr.status<300) {
7474
callback(xhr.responseText);
7575
} else {
76-
throw new VueifyJSError(`Failed to load ${url}!`);
76+
error(new VueifyJSError(`Failed to load ${url}!`));
7777
}
7878
};
7979
xhr.open('GET', url, true);
@@ -235,7 +235,9 @@ function findSFC(callback) {
235235
}
236236
}
237237

238-
let ret = callback(dom, url, name);
238+
let ret = callback(dom, url, name).catch((e)=>{
239+
console.error(e);
240+
});
239241
if (ret.__proto__ === Promise.prototype) {
240242
promises.push(ret);
241243
}
@@ -251,11 +253,12 @@ function findSFC(callback) {
251253
* @return sfc_src
252254
*/
253255
function downloadSFC(sfc_url) {
254-
// console.log(`download: ${sfc_url}`); // DEBUG
255-
return new Promise(resolve => {
256-
getContent(sfc_url, (sfc_src) => {
257-
resolve(sfc_src);
258-
});
256+
return new Promise((resolve, reject) => {
257+
getContent(
258+
sfc_url,
259+
(sfc_src) => resolve(sfc_src),
260+
(error) => reject(error)
261+
);
259262
});
260263
}
261264

@@ -305,7 +308,6 @@ async function preprocessCSS(sfc_obj) {
305308
// generate scopeId
306309
if (!_scopeId) {
307310
_scopeId = genScopeId();
308-
// console.log("scopeId:", _scopeId); // DEBUG
309311
}
310312

311313
// create temporary iframe to hold & parse css text
@@ -320,7 +322,11 @@ async function preprocessCSS(sfc_obj) {
320322
external_txt = await new Promise((resolve, reject) => {
321323
if (el.dom.hasAttribute('src')) {
322324
let path = el.dom.getAttribute('src');
323-
getContent(resolveUrl(path), (content) => resolve(content));
325+
getContent(
326+
resolveUrl(path),
327+
(content) => resolve(content),
328+
(error) => reject(error)
329+
);
324330
} else {
325331
resolve('');
326332
}
@@ -378,15 +384,18 @@ var cachedSFCs = {}; // { url : {blob_url, sfc_obj} }
378384
* @return input JS object
379385
*/
380386
async function preprocessJS(sfc_obj, deps=[]) {
381-
// console.log('dependency stack', deps); // DEBUG
382387
var js = sfc_obj.js;
383388

384389
// get content only from last script tag
385390
var el = js[js.length-1];
386391
var _jsText = await new Promise((resolve, reject) => {
387392
if (el.dom.hasAttribute('src')) {
388393
let path = el.dom.getAttribute('src');
389-
getContent(resolveUrl(path), (content) => resolve(content));
394+
getContent(
395+
resolveUrl(path),
396+
(content) => resolve(content),
397+
(error) => reject(error)
398+
);
390399
} else {
391400
resolve('');
392401
}
@@ -400,7 +409,6 @@ async function preprocessJS(sfc_obj, deps=[]) {
400409
_jsText = await asyncStringReplace(_jsText, re, async(match, path, offset, txt) => {
401410

402411
let child_sfc_url = resolveUrl(path);
403-
// console.log(`found child: ${child_sfc_url}`); // DEBUG
404412

405413
// check cyclic dependency
406414
if (deps.indexOf(child_sfc_url) != -1) {
@@ -416,7 +424,6 @@ async function preprocessJS(sfc_obj, deps=[]) {
416424
// replace import statement from relative path to blob url
417425
let cache = await Promise.resolve(cachedSFCs[child_sfc_url]);
418426
new_str = match.replace(path, cache.blob_url);
419-
// console.log(`${match} ====> ${new_str}`); // DEBUG
420427
return new_str;
421428
});
422429

@@ -461,7 +468,6 @@ async function uploadSFC(sfc_code) {
461468
* @return {string, object}
462469
*/
463470
async function transpileSFC(sfc_src, deps=[]) {
464-
// console.log('transpile:', deps[deps.length-1]); // DEBUG
465471
let sfc_obj = await parseSFC(sfc_src);
466472
await preprocessCSS(sfc_obj);
467473
await preprocessHTML(sfc_obj);
@@ -578,14 +584,12 @@ async function registerRootSFCs(VueClass) {
578584

579585
return async function() {
580586
sfc_url = resolveUrl(sfc_url);
581-
// console.log(`found: ${sfc_url}`); // DEBUG
582587

583588
await importSFC(sfc_url, [sfc_url]);
584589
let sfc_obj = await Promise.resolve(cachedSFCs[sfc_url]);
585590

586591
// register as global components
587592
if (!rootSFCs.includes(sfc_obj)) {
588-
// console.log(`register: ${sfc_url}`); // DEBUG
589593
rootSFCs.push(sfc_obj);
590594
new_sfcs.push(sfc_obj);
591595
sfc_obj.name = sfc_name;

0 commit comments

Comments
 (0)