TypeScript中导入body-parser模块报TS1259错误如何解决?
错误信息
你遇到的报错内容如下:
Error TS1259 (TS) Module '"D:/CloudStorage/..../node_modules/@types/body-parser/index"' can only be default-imported using the 'esModuleInterop' flag
错误截图

报错原因
body-parser 属于 CommonJS 规范的模块,其类型定义未提供 ES 规范的默认导出。TypeScript 默认不允许直接对 CommonJS 模块使用 import xxx from 'xxx' 格式的默认导入语法,esModuleInterop 就是 TypeScript 专门用于兼容两种模块规范的配置开关。
解决方案
方案一(推荐):修改TS全局配置
找到项目根目录下的 tsconfig.json 文件,在 compilerOptions 配置项下新增/修改两个字段:
{ "compilerOptions": { "esModuleInterop": true, "allowSyntheticDefaultImports": true } }
esModuleInterop开启后会自动处理 CommonJS 与 ES 模块的导入兼容逻辑allowSyntheticDefaultImports允许对无默认导出的模块使用默认导入语法,TypeScript 会自动生成合成的默认导出
保存配置后重启 IDE 或 TypeScript 服务,原有默认导入语句即可正常运行。
方案二:调整导入语法(无需修改配置)
如果不想改动全局配置,可以直接把默认导入改为命名空间导入写法:
import * as bodyParser from 'body-parser'
该写法无需调整任何配置即可正常使用,后续调用 bodyParser.json() 等方法的逻辑完全不受影响。
内容的提问来源于stack exchange,提问作者Indrajeet Haldar
相关产品推荐
相关产品推荐

