ts:终端执行 ts-node xx.ts 报错
ts-node
问题描述
前置条件:已经安装了 ts 依赖和 ts-node 依赖。
# typescript 安装与验证
npm i -g typescript
tsc -v
# ts-node 安装与验证
npm i -g ts-node
ts-node -v
问题报错:新建了 hello.ts 文件,通过 ts-node hello.ts
执行 ts 文件时报错,具体报错信息如下:
TypeError: Unknown file extension ".ts" for D:\xxx\test\typescript\hello.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 ModuleLoader.load (node:internal/modules/esm/loader:409:7)
at async ModuleLoader.moduleProvider (node:internal/modules/esm/loader:291:45)
at async link (node:internal/modules/esm/module_job:76:21) {
code: 'ERR_UNKNOWN_FILE_EXTENSION'
}
从报错信息中我们看到,TypeError: Unknown file extension ".ts",指出 Node.js 尝试以本地 ESM (ECMAScript Modules) 方式直接执行 .ts 文件时遇到了问题。Node.js 本身并不原生支持 .ts 文件的直接执行,因此当你尝试直接使用 Node.js 运行 TypeScript 文件时会发生这个错误。
解决方案
查看 package.json 文件后发现配置了 "type": "module"
选项,将其删除后再执行 ts-node hello.ts
后不再报错~
- 感谢你赐予我前进的力量