Skip to content

Commit 6dc7331

Browse files
committed
Upgrade acorn parsing to a newer version that can parse dynamic imports
1 parent bbe653c commit 6dc7331

File tree

2 files changed

+30
-12
lines changed

2 files changed

+30
-12
lines changed

packages/react-server-dom-webpack/src/ReactFlightWebpackNodeLoader.js

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -266,10 +266,16 @@ async function parseExportNamesInto(
266266
if (typeof source !== 'string') {
267267
throw new Error('Expected the transformed source to be a string.');
268268
}
269-
const {body: childBody} = acorn.parse(source, {
270-
ecmaVersion: '2019',
271-
sourceType: 'module',
272-
});
269+
let childBody;
270+
try {
271+
childBody = acorn.parse(source, {
272+
ecmaVersion: '2024',
273+
sourceType: 'module',
274+
}).body;
275+
} catch (x) {
276+
console.error('Error parsing ' + url + ' ' + x.message);
277+
continue;
278+
}
273279
await parseExportNamesInto(childBody, names, url, loader);
274280
continue;
275281
}
@@ -381,10 +387,16 @@ async function transformModuleIfNeeded(
381387
return source;
382388
}
383389

384-
const {body} = acorn.parse(source, {
385-
ecmaVersion: '2019',
386-
sourceType: 'module',
387-
});
390+
let body;
391+
try {
392+
body = acorn.parse(source, {
393+
ecmaVersion: '2024',
394+
sourceType: 'module',
395+
}).body;
396+
} catch (x) {
397+
console.error('Error parsing ' + url + ' ' + x.message);
398+
return source;
399+
}
388400

389401
let useClient = false;
390402
let useServer = false;

packages/react-server-dom-webpack/src/ReactFlightWebpackNodeRegister.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -244,10 +244,16 @@ module.exports = function register() {
244244
return originalCompile.apply(this, arguments);
245245
}
246246

247-
const {body} = acorn.parse(content, {
248-
ecmaVersion: '2019',
249-
sourceType: 'source',
250-
});
247+
let body;
248+
try {
249+
body = acorn.parse(content, {
250+
ecmaVersion: '2024',
251+
sourceType: 'source',
252+
}).body;
253+
} catch (x) {
254+
console.error('Error parsing ' + filename + ' ' + x.message);
255+
return originalCompile.apply(this, arguments);
256+
}
251257

252258
let useClient = false;
253259
let useServer = false;

0 commit comments

Comments
 (0)