TypeStrong / ts-node

TypeScript execution and REPL for node.js
https://typestrong.org/ts-node
MIT License
12.74k stars 529 forks source link

ESM: Cannot find module './index.js' and requiring "imaginaryUncacheableRequireResolveScript" #2099

Open flleeppyy opened 7 months ago

flleeppyy commented 7 months ago

Search Terms

If I try to run the script src/index.ts, it results in this error

TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for /home/chen/development/relatrack-backend/src/index.ts
    at Object.getFileProtocolModuleFormat [as file:] (node:internal/modules/esm/get_format:160:9)
    at defaultGetFormat (node:internal/modules/esm/get_format:203:36)
    at defaultLoad (node:internal/modules/esm/load:141:22)
    at async nextLoad (node:internal/modules/esm/hooks:865:22)
    at async nextLoad (node:internal/modules/esm/hooks:865:22)
    at async Hooks.load (node:internal/modules/esm/hooks:448:20)
    at async MessagePort.handleMessage (node:internal/modules/esm/worker:196:18) {
  code: 'ERR_UNKNOWN_FILE_EXTENSION'
}

But if I run the script with script/index.js, I get this error

node:internal/modules/cjs/loader:1147
  throw err;
  ^

Error: Cannot find module './index.js'
Require stack:
- /home/chen/development/relatrack-backend/src/imaginaryUncacheableRequireResolveScript
    at Module._resolveFilename (node:internal/modules/cjs/loader:1144:15)
    at Function.resolve (node:internal/modules/helpers:187:19)
    at requireResolveNonCached (/home/chen/development/relatrack-backend/node_modules/.pnpm/ts-node@10.9.2_@types+node@20.10.5_typescript@5.3.3/node_modules/ts-node/dist/bin.js:550:16)
    at getProjectSearchDir (/home/chen/development/relatrack-backend/node_modules/.pnpm/ts-node@10.9.2_@types+node@20.10.5_typescript@5.3.3/node_modules/ts-node/dist/bin.js:519:40)
    at phase3 (/home/chen/development/relatrack-backend/node_modules/.pnpm/ts-node@10.9.2_@types+node@20.10.5_typescript@5.3.3/node_modules/ts-node/dist/bin.js:267:27)
    at bootstrap (/home/chen/development/relatrack-backend/node_modules/.pnpm/ts-node@10.9.2_@types+node@20.10.5_typescript@5.3.3/node_modules/ts-node/dist/bin.js:47:30)
    at main (/home/chen/development/relatrack-backend/node_modules/.pnpm/ts-node@10.9.2_@types+node@20.10.5_typescript@5.3.3/node_modules/ts-node/dist/bin.js:33:12)
    at Object.<anonymous> (/home/chen/development/relatrack-backend/node_modules/.pnpm/ts-node@10.9.2_@types+node@20.10.5_typescript@5.3.3/node_modules/ts-node/dist/bin.js:580:5)
    at Module._compile (node:internal/modules/cjs/loader:1376:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1435:10) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/home/chen/development/relatrack-backend/src/imaginaryUncacheableRequireResolveScript'
  ]
}

Node.js v20.10.0

No where am I importing "imaginaryUncacheableRequireResolveScript" and looking that up on Google yields nothing.

Expected Behavior

It runs my code with either of the file extensions I provide

Actual Behavior

The errors above.

Steps to reproduce the problem

running pnpm/npm ts-node src/index.js with my tsconfig (making sure tpye is set to module in package.json)

Minimal reproduction

https://github.com/flleeppyy/ts-node-repros https://github.com/TypeStrong/ts-node-repros/pull/37

Specifications

ts-node v10.9.2 node v20.10.0 compiler v5.3.3

* package.json:

{ "name": "relatrack-backend", "version": "1.0.0", "description": "Backend to Relatrack, an inventory solution.", "main": "src/index.ts", "type": "module", "scripts": { "dev": "nodemon src/index.js", "start": "cd dist && node index.js", "build": "tsc", "lint": "eslint . --ext .js,.ts --fix --ignore-path .gitignore && prettier --write --ignore-path .gitignore .", "db:genschema": "cross-env node --no-warnings --loader ts-node/esm -r ts-node/register ./src/utils/dbSchemaParser.ts" }, "engines": { "node": ">=20.6.0", "pnpm": ">=8.0.0" }, "keywords": [], "author": { "name": "Chen Jinkerson", "email": "flleeppyybusiness@gmail.com", "url": "https://fleepy.tv" }, "license": "MIT", "dependencies": { "@fastify/cors": "^8.5.0", "@fastify/helmet": "^11.1.1", "@fastify/multipart": "^8.0.0", "@typescript-eslint/types": "^6.15.0", "ajv": "^8.12.0", "ajv-keywords": "^5.1.0", "bcryptjs": "^2.4.3", "better-sqlite3": "^9.2.2", "cross-env": "^7.0.3", "dotenv": "^16.3.1", "fastify": "^4.25.1", "fastify-plugin": "^4.5.1", "image-size": "^1.0.2", "jose": "^5.1.3", "json-schema-to-typescript": "^13.1.1", "jsonwebtoken": "^8.5.1", "knex": "^2.5.1", "pino": "^8.17.1", "pino-pretty": "^10.3.0", "sqlite3": "^5.1.6", "ts-node": "^10.9.2", "tslib": "^2.6.2" }, "devDependencies": { "@espimarisa/eslint-config": "^4.2.0", "@types/bcryptjs": "^2.4.6", "@types/jsonwebtoken": "^8.5.9", "@types/node": "^20.10.5", "@typescript-eslint/eslint-plugin": "^6.15.0", "@typescript-eslint/parser": "^6.15.0", "@typescript-eslint/typescript-estree": "^6.15.0", "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.29.1", "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^5.0.1", "eslint-plugin-unicorn": "^49.0.0", "nodemon": "^3.0.2", "prettier": "^3.1.1", "typescript": "^5.3.3" } }


* Operating system and version: Ubuntu 23.10 x86_64 
kira0x1 commented 6 months ago

i have this issue as well :/ really frustrating only workaround i got is

 node --no-warnings=ExperimentalWarning --loader ts-node/esm ./someDirectory/index.ts
cultron commented 1 month ago

FWIW - I ran into this issue just now and after banging my head against the wall for about 30 minutes, I realized the file I was calling fell under a pattern in my .gitignore file so it wasn't pulling into the build server I was running on. Dumb mistake on my part but my be an easy issue to overlook.