ts-node icon indicating copy to clipboard operation
ts-node copied to clipboard

`ERR_MODULE_NOT_FOUND` `CustomError: Cannot find package` when using paths

Open Jazcash opened this issue 2 years ago • 9 comments

C:\Users\me\Desktop\test\node_modules\ts-node\dist-raw\node-internal-modules-esm-resolve.js:757
  throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base));
        ^
CustomError: Cannot find package '@/stuff' imported from C:\Users\me\Desktop\test\src\index.ts
    at packageResolve (C:\Users\me\Desktop\test\node_modules\ts-node\dist-raw\node-internal-modules-esm-resolve.js:757:9)
    at moduleResolve (C:\Users\me\Desktop\test\node_modules\ts-node\dist-raw\node-internal-modules-esm-resolve.js:798:18)
    at Object.defaultResolve (C:\Users\me\Desktop\test\node_modules\ts-node\dist-raw\node-internal-modules-esm-resolve.js:912:11)
    at C:\Users\me\Desktop\test\node_modules\ts-node\src\esm.ts:218:35
    at entrypointFallback (C:\Users\me\Desktop\test\node_modules\ts-node\src\esm.ts:168:34)
    at C:\Users\me\Desktop\test\node_modules\ts-node\src\esm.ts:217:14
    at addShortCircuitFlag (C:\Users\me\Desktop\test\node_modules\ts-node\src\esm.ts:409:21)
    at resolve (C:\Users\me\Desktop\test\node_modules\ts-node\src\esm.ts:197:12)
    at resolve (C:\Users\me\Desktop\test\node_modules\ts-node\src\child\child-loader.ts:15:39)
    at nextResolve (node:internal/modules/esm/loader:163:28)

I'm importing another file with import { test } from "@/stuff". If I don't use the @ path alias and instead do import { test } from "./stuff" then it works fine. Previously the tsconfig-paths module has worked fine for me, but in this ESM project it seems to not work. Any ideas that don't require abandoning ESM and going back to CJS?

Minimal reproduction

https://codesandbox.io/p/sandbox/fast-dew-p8vcjk?file=%2Ftsconfig.json%3A11%2C27

Specifications

  • ts-node version: ^10.9.1
  • node version: 18.16.0
  • TypeScript version: 5.1.3
  • tsconfig.json:
{
  "compilerOptions": {
    "module": "es2022",
    "moduleResolution": "Node",
    "noEmit": true,
    "baseUrl": ".",
    "paths": {
      "@/*": ["./src/*"]
    }
  },
  "include": ["src/**/*"],
  "ts-node": {
    "esm": true,
    "require": ["tsconfig-paths/register"]
  }
}
  • package.json:
{
  "name": "test",
  "version": "1.0.0",
  "description": "",
  "type": "module",
  "scripts": {
    "build": "ts-node src/index.ts",
    "start": ""
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "ts-node": "^10.9.1",
    "tsconfig-paths": "^4.2.0",
    "typescript": "^5.1.3"
  }
}

Jazcash avatar Jun 21 '23 00:06 Jazcash

Seems, this is currently not supported on purpose, see https://github.com/TypeStrong/ts-node/issues/2023#issuecomment-1554205845

ptandler avatar Jul 18 '23 16:07 ptandler

I am facing similar issue can any one please help me out: https://github.com/TypeStrong/ts-node/issues/2023#issuecomment-1669505941

aaggarwal-sumo avatar Aug 08 '23 12:08 aaggarwal-sumo

This has done the trick for me: https://github.com/TypeStrong/ts-node/discussions/1450#discussioncomment-1806115

mettini avatar Aug 15 '23 18:08 mettini

Does not work in node 21 :/

mvarchdev avatar Apr 11 '24 11:04 mvarchdev