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

使用ts-node导入ESM模块报错,求解决方案

解决ES模块包在ts-node中的导入问题

你的问题根源是search-integrator是纯ES模块(使用import语法),而ts-node默认采用CommonJS加载逻辑,导致模块加载机制冲突。以下是几种可行的解决方法:

方法一:正确配置ts-node的ESM模式

需要同步调整几个配置项:

  • 项目根目录创建/修改tsconfig.json:
{
  "compilerOptions": {
    "module": "ESNext",
    "moduleResolution": "NodeNext",
    "target": "ES2020",
    "esModuleInterop": true
  },
  "ts-node": {
    "esm": true
  }
}
  • 在package.json中添加"type": "module"(如果没有的话):
{
  "type": "module"
}
  • 修改TS脚本的导入路径,补充.js后缀(ES模块解析要求显式文件后缀):
// my-script.ts
import SearchIntegrator from "search-integrator/src/main/search-integrator.js"
console.log(SearchIntegrator)
  • 最后运行命令:
ts-node my-script.ts

方法二:用tsx替代ts-node

tsx对ES模块和TypeScript的兼容性更好,无需复杂配置:

  1. 全局安装tsx:
npm install -g tsx
  1. 直接运行脚本:
tsx my-script.ts

方法三:先编译TS再用Node执行

如果不想调整运行工具,也可以先编译再运行:

  1. 配置tsconfig.json(同方法一的compilerOptions),执行编译:
tsc my-script.ts
  1. 用Node运行编译后的JS文件:
node my-script.js

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 14:42:38