Skip to content

Commit 5ab980e

Browse files
committed
fix: prevent dev server from crashing when encountering syntax errors
close #5
1 parent da2a85b commit 5ab980e

File tree

2 files changed

+58
-8
lines changed

2 files changed

+58
-8
lines changed

template/javascript/build.js

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,21 @@ async function bundleModule(module) {
5050
}
5151

5252
async function processScript(filePath) {
53-
let { ast, code } = await babel.transformFileAsync(path.resolve(filePath), {
54-
ast: true,
55-
});
53+
let ast, code;
54+
try {
55+
const result = await babel.transformFileAsync(path.resolve(filePath), {
56+
ast: true,
57+
});
58+
ast = result.ast;
59+
code = result.code;
60+
} catch (error) {
61+
console.error(`Failed to compile ${filePath}`);
62+
63+
if (__PROD__) throw error;
64+
65+
console.error(error);
66+
return;
67+
}
5668

5769
if (filePath.endsWith('app.js')) {
5870
/**
@@ -103,7 +115,20 @@ async function processTemplate(filePath) {
103115
async function processStyle(filePath) {
104116
const source = await fs.readFile(filePath, 'utf8');
105117
const { plugins, options } = await postcssrc({ from: undefined });
106-
const { css } = await postcss(plugins).process(source, options);
118+
119+
let css;
120+
try {
121+
const result = await postcss(plugins).process(source, options);
122+
css = result.css;
123+
} catch (error) {
124+
console.error(`Failed to compile ${filePath}`);
125+
126+
if (__PROD__) throw error;
127+
128+
console.error(error);
129+
return;
130+
}
131+
107132
const destination = filePath
108133
.replace('src', 'dist')
109134
.replace(/\.css$/, '.wxss');

template/typescript/build.js

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,21 @@ async function bundleModule(module) {
5050
}
5151

5252
async function processScript(filePath) {
53-
let { ast, code } = await babel.transformFileAsync(path.resolve(filePath), {
54-
ast: true,
55-
});
53+
let ast, code;
54+
try {
55+
const result = await babel.transformFileAsync(path.resolve(filePath), {
56+
ast: true,
57+
});
58+
ast = result.ast;
59+
code = result.code;
60+
} catch (error) {
61+
console.error(`Failed to compile ${filePath}`);
62+
63+
if (__PROD__) throw error;
64+
65+
console.error(error);
66+
return;
67+
}
5668

5769
if (filePath.endsWith('app.ts')) {
5870
/**
@@ -103,7 +115,20 @@ async function processTemplate(filePath) {
103115
async function processStyle(filePath) {
104116
const source = await fs.readFile(filePath, 'utf8');
105117
const { plugins, options } = await postcssrc({ from: undefined });
106-
const { css } = await postcss(plugins).process(source, options);
118+
119+
let css;
120+
try {
121+
const result = await postcss(plugins).process(source, options);
122+
css = result.css;
123+
} catch (error) {
124+
console.error(`Failed to compile ${filePath}`);
125+
126+
if (__PROD__) throw error;
127+
128+
console.error(error);
129+
return;
130+
}
131+
107132
const destination = filePath
108133
.replace('src', 'dist')
109134
.replace(/\.css$/, '.wxss');

0 commit comments

Comments
 (0)