如何解决无法使用 import 而不是 require,或无法使用 ts-node & tsdx 构建依赖项 递归困境:
我遇到了以下问题,并且确切地知道它被触发的原因,但我还没有找到任何解决方案,所以社区可能会帮助我解决这个问题。
我使用 tsdx
启动 ts 存储库,还使用 ts-node
进行快速调试(而不是每次都构建代码)。
递归困境:
因此,每次当我想通过 yarn add modulename
将模块添加到我的包时,如果在 tsconfig.json
选项中的 compilerOptions
文件中:"module": "commonjs"
具有以下值,tsdx build
无法构建代码,并返回以下错误:
错误:不兼容的 tsconfig 选项。模块解析为“CommonJS”。这与汇总不兼容,请使用 'module: "ES2015"' 或 'module: "ESNext"'
但是!
如果我将 compilerOptions
从 module: "ESNext"
更新为 commonjs
,ts-node
会给我一个错误,因为它仍然无法使用 import {Method} from Module
而不是 { {1}}(根据 this issue 和 this question,这是一个相当老的错误)
- Typescript -v 4.1.5(最新)
- ts 节点:“^9.1.1”
- node -v: 15+
const x = require(CommonJS)
据此,我正在使用来自 ts-node 存储库的 WebStorm 和 README.md
,我明白,我可以使用自定义 tsconfig 更新 "compilerOptions": {
"module": "commonjs",|| "ESNext"
"lib": ["dom","esnext"],...//other options
。 所以在这种情况下,我需要在 repo 中使用两个 tsconfig 文件,分别用于 ts-node 和生产。所以问题是:也许还有另一个 TS_NODE_FLAG,特别是对于 Environment Variables
编译器选项?所以我可以运行带有标志的 ts-node,这会覆盖这个次要参数?
解决方法
目前有效的折衷方案是有两个完全相同的配置文件:
tsconfig.json
tsconfig.dev.json
除了第二个有 "module":"commonjs"
第二个选项,实际上以某种方式对我不起作用是从 this question 添加到 WebStrom 的环境变量 TS_NODE_COMPILER_OPTIONS='{"module":"commonjs"}'
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。