ts-node:导入使用import和export的JS文件

问题描述 投票:0回答:1

我正在尝试使用

ts-node
命令运行此脚本:

// my-script.ts
import SearchIntegrator from "search-integrator/src/main/search-integrator"
console.log(SearchIntegrator)

但是 SearchIntegrator NPM 包似乎在内部使用

import
语句:

// search-integrator.js
import Parser from "./backend/parser/parser.js";
// …

...导致此错误的原因:

$ ts-node my-script.ts
Error [ERR_REQUIRE_ESM]: require() of ES Module /node_modules/search-integrator/src/main/search-integrator.js from my-script.ts not supported.

过去几个小时我尝试了在网上找到的各种配置选项组合。例如:

{
  "ts-node": {
    "esm": true
  }
}

…或者

{
  "ts-node": {
    "compilerOptions": {
      "module": "commonjs",
      "esModuleInterop": true
    }
  }
}

…甚至

"moduleResolution": "node"

但是,它唯一影响的是错误消息,例如

Uncaught SyntaxError: Cannot use import statement outside a module" when importing ECMAScript 6

我尝试的选项越多,我理解的就越少。我真的只是想

import
那个我对代码没有影响的NPM模块。

如果

ts-node
不是可行的方法,我也愿意使用其他工具。

我正在使用最新的 LTS Node (v18) 和最新版本的 ts-node (v10)。

typescript es6-modules ts-node
1个回答
0
投票

为了简单起见,我删除了

tsconfig.json
package.json
并通过将
my-script.ts
重命名为
my-script.mts
并使用以下命令运行它来使其工作:

npx ts-node --esm --compilerOptions '{ "module": "esnext" }' my-script.mts
© www.soinside.com 2019 - 2024. All rights reserved.