-
-
Notifications
You must be signed in to change notification settings - Fork 31.7k
detect-module: confusing error when parsing a CommonJS module with top-level await
#55776
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
await
await
Hi, I've looked around a bit to work on this and I wonder where I can find the CommonJS parsing error. https://github.com/nodejs/node/blob/main/lib/internal/modules/esm/module_job.js#L286 I think it's here: 216. line if (format === 'commonjs') {
const importStatement = splitStack[1];
// TODO(@ctavan): The original error stack only provides the single
// line which causes the error. For multi-line import statements we
// cannot generate an equivalent object destructuring assignment by
// just parsing the error stack.
const oneLineNamedImports = RegExpPrototypeExec(/{.*}/, importStatement);
const destructuringAssignment = oneLineNamedImports &&
RegExpPrototypeSymbolReplace(/\s+as\s+/g, oneLineNamedImports, ': ');
e.message = `Named export '${name}' not found. The requested module` +
` '${childSpecifier}' is a CommonJS module, which may not support` +
' all module.exports as named exports.\nCommonJS modules can ' +
'always be imported via the default export, for example using:' +
`\n\nimport pkg from '${childSpecifier}';\n${
destructuringAssignment ?
`const ${destructuringAssignment} = pkg;\n` : ''}`;
const newStack = StringPrototypeSplit(e.stack, '\n');
newStack[3] = `SyntaxError: ${e.message}`;
e.stack = ArrayPrototypeJoin(newStack, '\n');
} |
https://github.com/nodejs/node/blob/main/src/node_contextify.cc#L1613-L1614 |
Hello, I tried to make a small improvement for this place, I would be very happy if you review it at the appropriate time. |
Uh oh!
There was an error while loading. Please reload this page.
Porting from nodejs/TSC#1445 (comment):
index.js
:Getting this:
With this
package.json
:LOL. (
await
😈).Originally posted by @babakfp in nodejs/TSC#1445 (comment)
So basically, this module fails to parse as either CommonJS or as ESM, and we show the ESM parsing error message. Perhaps we should show both, or show a special message for the common use case of using top-level
await
in a CommonJS module.The text was updated successfully, but these errors were encountered: