使用ts-node命令运行ts文件时报错(Warning: To load an ES module, set “type“: “module“ in the package.json...)

使用 ts-node 运行TS文件时报错。

错误信息1:

E:\PersonalProject\ts-utils\test>ts-node DateChainTest.ts
(node:22636) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use `node --trace-warnings ...` to show where the warning was created)
E:\PersonalProject\ts-utils\test\DateChainTest.ts:1
import { DateChain } from '../src/DateChain';
^^^^^^

SyntaxError: Cannot use import statement outside a module

......

错误信息2:

TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for E:\PersonalProject\ts-utils\test\DateChainTest.ts
    at new NodeError (node:internal/errors:371:5)
    at Loader.defaultGetFormat [as _getFormat] (node:internal/modules/esm/get_format:71:15)
    at Loader.getFormat (node:internal/modules/esm/loader:105:42)
    at Loader.getModuleJob (node:internal/modules/esm/loader:243:31)
    at async Loader.import (node:internal/modules/esm/loader:177:17)
    at async Object.loadESM (node:internal/process/esm_loader:68:5)
    at async handleMainPromise (node:internal/modules/run_main:63:12) {
  code: 'ERR_UNKNOWN_FILE_EXTENSION'
}

ts-node 版本:^10.8.0typescript 版本:^4.6.3

tsconfig.json文件内容如下

{
  "compilerOptions": {
    "baseUrl": "./",
    "module": "es6",
    "target": "es2020",
    "allowJs": false,
    "declaration": true,
    "outDir": "./dist",
    "strict": true
  },
  "exclude": [
    "node_modules"
  ],
  "include": [
    "index.ts",
    "src/*"
  ]
}

在网上查找了一些资料,出现类似问题的有很多,链接如下:

其中主要有以下几种解决方式:

方法1:

  1. package.json中设置"type"属性为"module"
  2. 再将tsconfig.json中的compilerOptionsesModuleInterop属性值置为true
尝试结果:失败,报错信息内容如错误信息2所示

方法2:

  1. package.json中移除"type": "module"
  2. tsconfig.json中将compilerOptionsmodule属性改为"CommonJS",或者在该文件中添加"ts-node"配置项。
{
  /* ... your props ... */
  "ts-node": {
    "compilerOptions": {
      "module": "CommonJS"
    }
  }
}
尝试结果:成功,问题解决!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值