NodeJS 如何解决TypeScript项目中的ERR_UNKNOWN_FILE_EXTENSION

i5desfxk  于 2023-06-05  发布在  Node.js
关注(0)|答案(2)|浏览(417)

Demo
最近,我尝试建立一个使用ES6 import语句和顶级await的node项目,我遇到了一个奇怪的问题。
在使用npx ts-node index.ts运行我的应用程序时,我发现它不知道我的文件扩展名.ts

TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for /home/zhyp/Code/ts-test/src/index.ts

因此,经过一些研究,我遇到了esm标志(npx ts-node --esm index.ts),在运行此命令后,我的文件实际上无法找到:

throw new ERR_MODULE_NOT_FOUND(
          ^
CustomError: Cannot find module '/home/zhyp/Code/ts-test/src/imported-file' imported from /home/zhyp/Code/ts-test/src/index.ts

因此,经过更多的研究,我尝试将.js扩展名添加到所有导入中,这很奇怪,但如果我将这些文件的扩展名更改为.ts,则不会,因为那样我需要在tsconfig.json中启用allowImportingTsExtensions,并启用notEmit,这将阻止我使用tsc构建任何东西。
谁能帮我理解为什么这个设置不起作用?
复制所需的文件:
tsconfig.json

{
  "compilerOptions": {
    "target": "es2022",
    "module": "es2022",
    "rootDir": "src",
    "resolveJsonModule": true,
    "allowJs": true,
    "outDir": "build",
    "forceConsistentCasingInFileNames": true,
    "strict": true,
    "noImplicitAny": true,
    "skipLibCheck": true
  }
}

package.json

{
  "name": "typescript-node",
  "version": "1.0.0",
  "description": "TypeScript Template with Node.js",
  "main": "src/index.js",
  "scripts": {
    "start": "nodemon --exec 'ts-node' src/index.ts"
  },
  "dependencies": {
    "@types/node": "14.14.29",
    "ts-node": "10.9.1",
    "typescript": "5.0.4"
  },
  "devDependencies": {
    "@types/express": "^4.17.6",
    "nodemon": "1.18.4"
  },
  "keywords": [],
  "type": "module"
}

index.ts

import test from "./imported-file";

console.log(test);

imported-file.ts

export default {};
xyhw6mcr

xyhw6mcr1#

检查节点版本。当我从20.2.0降级到19.8.1时,它对我很有效

utugiqy6

utugiqy62#

我偶然发现了这个post,上面的答案帮助我更好地理解了为什么它不起作用,在tsconfig.json上使用module: "es2022"和在package.json上使用type: "module"有一些警告。

相关问题