FoodApp API用Faker生成种子数据时import/require混用报错
FoodApp后端API模块规范冲突报错问题
问题场景
- 开发FoodApp后端API时,计划使用
@faker-js/fakernpm包生成模拟测试数据填充数据库,用于验证接口筛选功能 - 项目原有所有依赖均采用CommonJS规范的
require()语法引入,但@faker-js/faker为纯ESM包,必须使用ES模块的import语法引入,尝试过网上公开的多种兼容方案均未生效
已完成配置
- 在
server.js顶部引入module模块的createRequire方法创建require函数 - 在
package.json中添加"type": "module"声明 - 初步怀疑问题与路由文件配置有关,但无法定位根本原因
当前报错信息
启动服务时触发ERR_REQUIRE_ESM错误,核心提示:
因
package.json配置了"type": "module",项目目录下所有.js文件会被识别为ES模块,server.js中无法通过require()引入同为ES模块格式的routes/subscribers.js路由文件,错误信息中给出了三种官方建议的修复方向。
排查参考材料
问题定位可参考以下附带材料:
- 完整错误堆栈
server.js顶部添加的兼容代码- 完整
package.json配置 server.js入口文件代码restaurants.js路由文件代码subscribers.js路由文件代码
内容的提问来源于stack exchange,提问作者CLAM
相关产品推荐
相关产品推荐

