环境
我已经安装了typescript、ts-node包:
问题
项目目录下面有一个ts文件:
用ts-node hello.ts
运行,报类型错误:
TypeError: Unknown file extension ".ts" for D:\temp\前端\前端入门\ts-study\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:143:22)
at async ModuleLoader.load (node:internal/modules/esm/loader:403:7)
at async ModuleLoader.moduleProvider (node:internal/modules/esm/loader:285:45)
at async link (node:internal/modules/esm/module_job:78:21) {
code: 'ERR_UNKNOWN_FILE_EXTENSION'
}
原因
项目目录下面尽管没有package.json文件,但上级目录有一个package.json文件,其中包含"type": "module"
:
package.json文件的查找机制就是先使用当前目录,如果没有,再查找上一级目录,如此递推。
解决方法
方法一:将上级目录package.json文件中的"type": "module"
这句话去掉。这样可能会影响上级目录下面的其它项目。(不推荐)
方法二:在本项目目录下面新建一个空的package.json文件,这样影响最小(推荐)。如下:
现在再执行,就正确了: