Repository navigation
Node can't recognize static import of ES module when theres's not explicit marker #51057
Description
Activity
The docs seem incomplete. Detection is an experimental feature and currently requires the flag
--experimental-detect-module. Ref: #50096Yes, @meyfa , I tried
--experimental-detect-module, it worked as expected. The documents don't mention this flag.- addedgood first issueIssues that are suitable for first-time contributors.Issues that are suitable for first-time contributors.
on Dec 5, 2023 @jasonjiicloud, did you add this "type":"module" in your package.json file. if not, this is causing the issue.
The issue is in the documentation, as said above.
@aduh95 id like to handle this, do the docs just need to be updated to mention using the flag?
@jasonjiicloud you can add
"type":"module"(by default if the "type" is omitted the "type" is "commonjs") in your package.json file or you can run file with the commandnode --experimental-modules main.js@aduh95 let me know if I can help any further to resolve the issue?let me know if I can help any further to resolve the issue?
Yes, you could open a PR to fix the docs.
let me know if I can help any further to resolve the issue?
Yes, you could open a PR to fix the docs.
I checked https://github.com/nodejs/node/blob/main/doc/api/cli.md?plain=1 at line 676 and it's mentioned that
--experimental-detect-moduleis added to node versions v21.1.0 and v20.10.0 and is in early development. However, this (https://nodejs.org/dist/latest-v20.x/docs/api/packages.html), documentation is not updated as of now. I'd open a PR to fix packeges.md and add --experimental-detect-module flag.@aduh95 I made a pull request. It's showing 5 workflows awaiting approval and Merging is blocked. Did I do anything wrong? I'm fairly new to github. Please help.
- added a commit that references this issue
on Dec 9, 2023 - added a commit that references this issue
on Dec 15, 2023 - added a commit that references this issue
on Mar 25, 2024
Version
v20.10.0
Platform
Darwin a.local 21.6.0 Darwin Kernel Version 21.6.0: Fri Sep 15 16:17:23 PDT 2023; root:xnu-8020.240.18.703.5~1/RELEASE_X86_64 x86_64
Subsystem
No response
What steps will reproduce the bug?
A "main.js" file with code
import path from 'path';, nothing more.run
node main.jsHow often does it reproduce? Is there a required condition?
Every time.
What is the expected behavior? Why is that the expected behavior?
According to the document https://nodejs.org/dist/latest-v20.x/docs/api/packages.html,
In following case, code will be treated as ES module:
Code that contains syntax that only parses successfully as ES modules, such as import or export statements or import.meta, when the code has no explicit marker of how it should be interpreted.
What do you see instead?
Error displayed:
(node:10393) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use
node --trace-warnings ...to show where the warning was created)/Users/jasonji/main.js:1
import path from 'path';
^^^^^^
SyntaxError: Cannot use import statement outside a module
Additional information
The behavior of Node.js is not consistent with the document.