赞
踩
如果在A.ts中使用export
导出了一个变量,然后在B.ts中使用import
导入,通过ts-node运行,则会报错:
Cannot use import statement outside a module
这是因为export
和import
是ESM模块的导出导入语法,而ts项目初始化后默认的是CommonJS的导入导出语法,所以需要在根目录下的package.json中添加"type": "module"
,可解决此问题。"type": "module"
是用于指定项目中使用 ECMAScript 模块(ESM)的声明。
{
"dependencies": {
"ts-node": "^10.9.1",
"typescript": "^5.2.2"
},
"type": "module"
}
但是,再次尝试运行该文件,出现了另一个错误:
TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension “.ts” for xxx.ts
错误描述为位置的文件扩展名。
这其实也跟ESM模块有关,需要在执行ts-node命令时,加上–esm的选项。即:
ts-node --esm main.ts
执行该命令,又又出现另一个错误:
An import path can only end with a ‘.ts’ extension when ‘allowImportingTsExtensions’ is enabled.
这个错误提示很明显了,直接去tsconfig.json里,加上 "allowImportingTsExtensions": true
, 即可。
重新执行命令,成功输出结果。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。