Skip to content

esm: invalid extension error should provide parent context in error #30721

Closed

Description

@LJNeon
  • Version: v13.2.0
  • Platform: Windows 10, 64-bit
  • Subsystem: N/A

When trying to import a JSON file, the error message provided is the following:

(node:7004) ExperimentalWarning: The ESM module loader is experimental.
internal/modules/run_main.js:50
    internalBinding('errors').triggerUncaughtException(
                              ^

TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension: C:\Users\Mercy\Desktop\New folder\node_modules\patron.js\package.json
    at Loader.resolve [as _resolve] (internal/modules/esm/default_resolve.js:114:13)
    at Loader.resolve (internal/modules/esm/loader.js:74:33)
    at Loader.getModuleJob (internal/modules/esm/loader.js:148:40)
    at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:41:40)
    at link (internal/modules/esm/module_job.js:40:36) {
  code: 'ERR_UNKNOWN_FILE_EXTENSION'
}

How to reproduce:

  1. Create test.mjs with import './package.json'
  2. Run node test.mjs

To help debug this error we should ensure it provides the name of the parent module that attempted the file extension load - something like imported from /path/to/test.mjs.

Activity

  1. addaleax commented on Nov 29, 2019

    @addaleax
    Member

    @nodejs/modules-active-members

  2. added
    esmIssues and PRs related to the ECMAScript Modules implementation.
    on Nov 29, 2019
  3. guybedford commented on Nov 29, 2019

    @guybedford
    Contributor

    If you run this example with node --experimental-json-modules index.js it gives a different error so the problem is that you actually have an import to the package.json file somewhere in the tree.

    We should look at improving this error message to include the parent module that cause the load to provide debugging context. For that reason I'm changing the title and marking this as a bug.

  4. changed the title [-]esm: modules with file extention in name cannot be imported[/-] [+]esm: invalid extension error should provide parent context in error[/+] on Nov 29, 2019
  5. added
    feature requestIssues requesting new Node.js features.
    help wantedIssues that need assistance from volunteers or PRs that need help to proceed.
    good first issueIssues that are suitable for first-time contributors.
    on Nov 29, 2019
  6. guybedford commented on Nov 29, 2019

    @guybedford
    Contributor

    (@LJNeon I hope you don't mind me rewording your original issue to reflect the root cause, we can move it to another issue if you'd prefer too.)

  7. qualitymanifest commented on Nov 30, 2019

    @qualitymanifest
    Contributor

    I'd like to give this a try.

    Would it be okay to modify default_resolve (the only place I see this error being used) so that parentURL is passed into ERR_UNKNOWN_FILE_EXTENSION, or is there a better way of getting the parent URL inside the error function?

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

    esmIssues and PRs related to the ECMAScript Modules implementation.feature requestIssues requesting new Node.js features.good first issueIssues that are suitable for first-time contributors.help wantedIssues that need assistance from volunteers or PRs that need help to proceed.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions