node.js - 无法使用 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"'
但!
如果我将更新compilerOptions
到module: "ESNext"
from commonjs
,ts-node
会给我一个错误,因为它仍然无法使用import {Method} from Module
而不是const x = require(CommonJS)
(根据这个问题和这个问题,这是一个相当老的错误)
- 打字稿-v 4.1.5(最新)
- ts 节点:“^9.1.1”
- 节点-v:15+
"compilerOptions": {
"module": "commonjs", || "ESNext"
"lib": ["dom", "esnext"],
...//other options
据我所知,我正在使用 WebStorm 和README.md
ts-node repo,我可以Environment Variables
使用自定义 tsconfig 进行更新。因此,在这种情况下,我需要 repo 中的两个 tsconfig 文件,用于 ts-node 和用于 production。所以问题是:也许还有另一个 TS_NODE_FLAG,尤其是对于module
编译器选项?所以我可以用标志运行 ts-node ,这会覆盖这个小参数吗?
解决方案
目前的折衷方案是有两个完全相同的配置文件:
tsconfig.json
tsconfig.dev.json
除了第二个有"module":"commonjs"
第二个选项,实际上对我TS_NODE_COMPILER_OPTIONS='{"module":"commonjs"}'
不起作用是从这个问题添加到 WebStrom 的环境变量中。
推荐阅读
- reactjs - 我们可以将状态变量作为参数从组件内部定义的 react js 函数传递给外部 util 函数吗?
- angular - Angular 7 如何手动触发 mat-error?
- linux - Pentaho:二进制文件(标准输入)匹配
- spring-boot - 在tomcat上部署spring boot应用程序,我应该替换我所有应用程序的url
- react-native - 如何在平面列表项 onpress 中获取参考?
- r - 如何使用 ggplot2 绘制分组条形图、分段条形图和脊柱图?
- cordova - Ionic v3 + MFP 项目设置 - 总是获取更新的插件?
- python - 选择线上方/下方的点
- php - 我是否需要在每个页面中定义会话。我不希望每个页面都被重定向登录
- jquery - Html5音频动态源为空,如何检测?