Sitelet https://github.com/nodejs/node/issues/51057
Skip to content

Node can't recognize static import of ES module when theres's not explicit marker #51057

Description

@jasonjiicloud

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.js

How 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.

Activity

  1. meyfa commented on Dec 5, 2023

    @meyfa
    Contributor

    The docs seem incomplete. Detection is an experimental feature and currently requires the flag --experimental-detect-module. Ref: #50096

  2. jasonjiicloud commented on Dec 5, 2023

    @jasonjiicloud
    Author

    Yes, @meyfa , I tried --experimental-detect-module, it worked as expected. The documents don't mention this flag.

  3. added
    good first issueIssues that are suitable for first-time contributors.
    on Dec 5, 2023
  4. jangala-laxman commented on Dec 5, 2023

    @jangala-laxman

    @jasonjiicloud, did you add this "type":"module" in your package.json file. if not, this is causing the issue.

  5. aduh95 commented on Dec 5, 2023

    @aduh95
    Contributor

    The issue is in the documentation, as said above.

  6. DylanTet commented on Dec 5, 2023

    @DylanTet
    Contributor

    @aduh95 id like to handle this, do the docs just need to be updated to mention using the flag?

  7. shubherthi-mitra commented on Dec 7, 2023

    @shubherthi-mitra
    Contributor

    @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 command node --experimental-modules main.js @aduh95 let me know if I can help any further to resolve the issue?

  8. aduh95 commented on Dec 7, 2023

    @aduh95
    Contributor

    let me know if I can help any further to resolve the issue?

    Yes, you could open a PR to fix the docs.

  9. shubherthi-mitra commented on Dec 7, 2023

    @shubherthi-mitra
    Contributor

    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-module is 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.

  10. shubherthi-mitra commented on Dec 7, 2023

    @shubherthi-mitra
    Contributor

    @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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    good first issueIssues that are suitable for first-time contributors.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions