You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ts-node执行TS文件时无法使用import语句的问题求助

解决ts-node运行TS文件的模块语法错误问题

问题分析

你遇到的两个错误本质是Node.js模块系统与TypeScript编译配置不匹配:

  1. 无"type": "module"时,Node默认按CommonJS模块加载文件,但你的TS配置"module": "esnext"会让ts-node转译出ES模块语法(import),导致Node报错“不能在模块外使用import”。
  2. 添加"type": "module"后,Node切换为ES模块模式,但它原生不识别.ts扩展名,所以报错“未知文件扩展名.ts”。

解决方案

提供两种可行方案,选一种即可:

方案1:切换为CommonJS模块(快速解决)

修改tsconfig.json的compilerOptions,将模块系统改为CommonJS:

"compilerOptions": {
  // 其他配置保留
  "module": "CommonJS", // 把esnext改成CommonJS
  "moduleResolution": "node" // 保持不变即可
}

不需要修改package.json,直接运行命令:

ts-node src/foo.ts

方案2:配置ES模块模式下的ts-node(适合坚持用ES模块的场景)

  1. 确保package.json中已添加:
"type": "module"
  1. 修改tsconfig.json的ts-node配置,启用ES模块支持,同时调整编译选项适配ES模块:
{
  "extends": "ts-node/node16/tsconfig.json",
  "ts-node": {
    "transpileOnly": true,
    "files": true,
    "esm": true, // 新增:启用ES模块支持
    "compilerOptions": {}
  },
  "compilerOptions": {
    // 其他配置保留
    "module": "esnext",
    "moduleResolution": "nodenext" // 改成nodenext,适配ES模块解析规则
  },
  "include": ["src/**/*"]
}
  1. 运行命令(也可直接用ts-node src/foo.ts,因为配置里已开启esm):
ts-node --esm src/foo.ts

验证

两种方案修改后,重新运行ts-node src/foo.ts,应该能正常输出hello world并初始化CDK App。

内容的提问来源于stack exchange,提问作者00robinette

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 09:55:19