Skip to content

[Bug] Not working with ESM modules #134

Open
@bhvngt

Description

@bhvngt

I am trying this out with my esm module with following configuration

tsconfig.tsnode.json

{
	"include": ["src/**/*", "tests/**/*"],
	"exclude": ["node_modules/*", "coverage/*"],
	"ts-node": {
		"transpileOnly": true,
		"require": ["typescript-transform-paths/register"]
	},
	"compilerOptions": {
		"target": "esnext",
		"module": "esnext",
		"lib": ["dom", "esnext"],
		"moduleResolution": "node",
		"strict": true,
		"forceConsistentCasingInFileNames": true,
		"importsNotUsedAsValues": "error",
		"incremental": true,
		"types": ["node", "jest"],
                "baseUrl": ".",
		"paths": {
			"$src/*": ["./src/*"]
		},
		"isolatedModules": false,
		"plugins": [
			{ "transform": "typescript-transform-paths" },
			{ "transform": "typescript-transform-paths", "afterDeclarations": true }
		]
	}
}

package.json

{
...
"type": "module"
...
}

b.ts

export const b: string = "Hello World!"

a.ts

import {b} from "$src/b"

console.log(b);

TS_NODE_PROJECT=tsconfig.tsnode.json node --loader ts-node/esm --es-module-specifier-resolution=node src/a.ts throws

/projects/common/temp/node_modules/.pnpm/ts-node@10.2.1_c780171742f6906a053a603dfa210a4e/node_modules/ts-node/dist-raw/node-esm-resolve-implementation.js:774
  throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base));
        ^
CustomError: Cannot find package '$src' imported from /projects/libs/domain/src/a.ts
    at packageResolve (/projects/common/temp/node_modules/.pnpm/ts-node@10.2.1_c780171742f6906a053a603dfa210a4e/node_modules/ts-node/dist-raw/node-esm-resolve-implementation.js:774:9)
    at moduleResolve (/projects/common/temp/node_modules/.pnpm/ts-node@10.2.1_c780171742f6906a053a603dfa210a4e/node_modules/ts-node/dist-raw/node-esm-resolve-implementation.js:815:18)
    at Object.defaultResolve (/projects/common/temp/node_modules/.pnpm/ts-node@10.2.1_c780171742f6906a053a603dfa210a4e/node_modules/ts-node/dist-raw/node-esm-resolve-implementation.js:929:11)
    at /projects/common/temp/node_modules/.pnpm/ts-node@10.2.1_c780171742f6906a053a603dfa210a4e/node_modules/ts-node/src/esm.ts:68:38
    at Generator.next (<anonymous>)
    at /projects/common/temp/node_modules/.pnpm/ts-node@10.2.1_c780171742f6906a053a603dfa210a4e/node_modules/ts-node/dist/esm.js:8:71
    at new Promise (<anonymous>)
    at __awaiter (/projects/common/temp/node_modules/.pnpm/ts-node@10.2.1_c780171742f6906a053a603dfa210a4e/node_modules/ts-node/dist/esm.js:4:12)
    at resolve (/projects/common/temp/node_modules/.pnpm/ts-node@10.2.1_c780171742f6906a053a603dfa210a4e/node_modules/ts-node/dist/esm.js:32:16)
    at Loader.resolve (node:internal/modules/esm/loader:89:40)

if I change import in a.ts to relative path import {b} from "./b", it works with the same command.

When used with commonjs works by changing module to commonjs under tsconfig and removing "type": "module" under package.json with cli TS_NODE_PROJECT=tsconfig.tsnode.json ts-node src/a.ts

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions