require() of ES modules is not supported.ts项目中添加js文件报错
warning:
这篇文章距离上次修改已过191天,其中的内容可能已经有所变动。
解释:
这个错误通常发生在使用TypeScript项目中尝试直接require()
一个使用ES模块语法编写的JavaScript文件时。在TypeScript中,默认情况下不支持ES模块的require
,因为TypeScript将ES模块转译为CommonJS格式,而在运行时Node.js默认使用ES模块。
解决方法:
- 将JavaScript文件改造为TypeScript文件,并添加相应的类型声明。
- 如果不想改变JavaScript文件,可以在
tsconfig.json
中设置"esModuleInterop": true
和"allowSyntheticDefaultImports": true
,然后使用import
语法而不是require
。 - 在
tsconfig.json
中设置"module": "commonjs"
,这样TypeScript就会编译输出CommonJS模块,与Node.js兼容。 - 如果你正在使用Babel,可以在Babel配置中添加一个插件,比如
@babel/plugin-transform-modules-commonjs
,来将ES模块转换为CommonJS模块。
选择哪种方法取决于你的具体项目需求和上下文。通常推荐使用第2或第3种方法,因为它们不需要改变原有的JavaScript文件,只是调整TypeScript配置或者编译选项。
评论已关闭