You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript项目导入模块触发TS1259报错问题求助

解决TypeScript中ES模块默认导入的TS1259错误(esModuleInterop配置无效问题)

最近在开发Node.js + TypeScript项目时,碰到了一个挺头疼的问题:原本正常导入的express、knex、path等模块突然没法正常导入了,重置配置也不管用。执行npx tsc src/server.ts时,控制台抛出一堆TS1259错误,提示必须启用esModuleInterop标记才能做默认导入,可明明我已经在配置里加了这个选项。

环境信息

  • 系统:Ubuntu 20.04.1 LTS
  • Node.js版本:v12.18.1
  • 依赖包:
    • @types/express@^4.17.6
    • @types/node@^14.0.27
    • ts-node@^8.10.2
    • ts-node-dev@^1.0.0-pre.44
    • typescript@^3.9.3
    • express@^4.17.1
    • knex@^0.21.1
    • pg@^8.2.1

排查过程

  1. 首先检查了tsconfig.json,确认已经设置了"esModuleInterop": true,但执行编译命令后错误依然存在
  2. 尝试添加"allowSyntheticDefaultImports": true配置项,想着能解决默认导入的兼容问题,结果还是报同样的错
  3. 对比项目里另一个能正常运行的./server2目录,发现两个目录的tsconfig配置内容完全一致,但./server目录就是没法正常编译

最终解决方法

反复对比两个目录的结构后,终于找到问题根源:./server目录的tsconfig.json被放在了src子目录下,而./server2的配置文件是放在目录根目录的。

把./server/src/tsconfig.json移动到./server/根目录后,重新执行npx tsc src/server.ts,所有TS1259错误都消失了,模块也能正常导入了。

说穿了原因很简单:TypeScript默认会从当前执行命令的目录向上查找tsconfig.json,如果配置文件放在src子目录,执行编译命令时可能没正确读取到配置,导致esModuleInterop等选项根本没生效。

内容的提问来源于stack exchange,提问作者fpc7063

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 20:22:32