首页 > 解决方案 > 无法使用 import 而不是 require,或者无法使用 ts-node 和 tsdx 构建依赖项

问题描述

我有以下问题,并且确切地知道它被触发的原因,但我还没有找到任何解决方案,所以社区可能会帮助我解决这个问题。

tsdx用于启动 ts repos,也ts-node用于快速调试(而不是每次都构建代码)。

递归困境:

因此,每次当我想将模块添加到我的包时yarn add modulename,如果在我的tsconfig.json文件中compilerOptions选项:"module": "commonjs"具有以下值,tsdx build无法构建代码,并返回以下错误:

错误:不兼容的 tsconfig 选项。模块解析为“CommonJS”。这与汇总不兼容,请使用 'module: "ES2015"' 或 'module: "ESNext"'

模块:

但!

如果我将更新compilerOptionsmodule: "ESNext"from commonjsts-node会给我一个错误,因为它仍然无法使用import {Method} from Module而不是const x = require(CommonJS)(根据这个问题这个问题,这是一个相当老的错误) 在此处输入图像描述

  "compilerOptions": {
    "module": "commonjs", || "ESNext"
    "lib": ["dom", "esnext"],
    ...//other options

据我所知,我正在使用 WebStorm 和README.mdts-node repo,我可以Environment Variables使用自定义 tsconfig 进行更新。因此,在这种情况下,我需要 repo 中的两个 tsconfig 文件,用于 ts-node 和用于 production。所以问题是:也许还有另一个 TS_NODE_FLAG,尤其是对于module编译器选项?所以我可以用标志运行 ts-node ,这会覆盖这个小参数吗?

标签: node.jstypescriptwebstormts-nodetsdx

解决方案


目前的折衷方案是有两个完全相同的配置文件:

  • tsconfig.json
  • tsconfig.dev.json

除了第二个有"module":"commonjs"

妥协

第二个选项,实际上对我TS_NODE_COMPILER_OPTIONS='{"module":"commonjs"}'不起作用是从这个问题添加到 WebStrom 的环境变量中。


推荐阅读