Skip to content

package.json "imports" field support #724

Description

@0x241F31

There is https://nodejs.org/api/packages.html#imports and resolvePackageJsonImports in tsconfig.json.
My configuration:

import eql from '#eql'

tsconfig.json:

"compilerOptions": {
  "strict": true,
  "baseUrl": ".",

  "target": "ESNext",
  "module": "NodeNext",
  "moduleResolution": "NodeNext",
  "resolvePackageJsonImports": true,

  "noEmit": true,
  "isolatedModules": true,

  "skipDefaultLibCheck": true,
  "skipLibCheck": true,
},
// ...

package.json:

"type": "module",
"imports": {
  "#eql": "./eql/index.mts"
},
// ...

Running node --loader=@swc-node/register/esm main.ts results in:

node:internal/process/esm_loader:46
      internalBinding('errors').triggerUncaughtException(
                                ^
RangeError [ERR_UNKNOWN_MODULE_FORMAT]: Unknown module format: undefined for URL file:///home/foxpro/craft/sferadel/dev/api/eql/index.mts
    at new NodeError (node:internal/errors:405:5)
    at Object.throwUnknownModuleFormat (node:internal/modules/esm/load:155:9)
    at Hooks.load (node:internal/modules/esm/hooks:417:44)
    at async handleMessage (node:internal/modules/esm/worker:168:18) {
  code: 'ERR_UNKNOWN_MODULE_FORMAT'
}

Node.js v20.5.1

I tried to change to:

"imports": {
  "#eql": "./eql/index.mjs"
},

Then, error is

Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/home/foxpro/craft/sferadel/dev/api/eql/index.mjs' imported from /home/foxpro/craft/sferadel/dev/api/user/user.mts

It's closed circle. Am I doing it in a wrong way?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions