已开启esModuleInterop仍无法导入export=声明模块,报TS1259错误
问题原因
- 当你执行
tsc 具体文件名.ts格式的命令时,TypeScript编译器会忽略项目根目录下的tsconfig.json配置,直接使用默认编译参数,你在配置中声明的esModuleInterop、allowSyntheticDefaultImports两个参数完全没有生效,因此触发了模块导入报错。 - 你当前的tsconfig.json中已经通过
files字段指定了需要编译的HopBridgeScript.ts文件,不需要额外在命令行传入文件名。 - 额外排查点:如果执行命令的工作目录不是tsconfig.json所在的项目根目录,也会导致编译器无法读取到正确的配置。
解决方法
你可以根据自己的使用场景选择任意一种方案:
- 直接使用无参数的tsc命令,编译器会自动读取当前目录下的tsconfig.json,按照你预设的参数完成编译。注意你配置的
outDir为./dist/out-tsc,编译后的产物会输出到该目录下,运行时需要对应修改路径:
tsc && node ./dist/out-tsc/HopBridgeScript.js
- 如果你需要临时编译单个文件、且希望沿用项目配置,可以添加
-p参数指定配置文件路径:
tsc -p ./tsconfig.json HopBridgeScript.ts && node HopBridgeScript.js
- 如果你不需要复用项目配置,可以直接在命令行传入需要的编译参数:
tsc HopBridgeScript.ts --esModuleInterop true --allowSyntheticDefaultImports true && node HopBridgeScript.js
内容的提问来源于stack exchange,提问作者Dominik
相关产品推荐
相关产品推荐

