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

如何修复formidable的Error [ERR_REQUIRE_ESM]错误?

解决ERR_REQUIRE_ESM:CommonJS引入ES模块formidable失败问题

错误信息

Error [ERR_REQUIRE_ESM]: require() of ES Module C:\Users\Admin\Desktop\Server\node_modules\formidable\src\index.js from C:\Users\Admin\Desktop\Server\back\productController.js not supported.
Instead change the require of index.js in C:\Users\Admin\Desktop\Server\back\productController.js to a dynamic import() which is available in all CommonJS modules.
    at Object.<anonymous> (C:\Users\Admin\Desktop\Server\back\productController.js:5:20)
    at Object.<anonymous> (C:\Users\Admin\Desktop\Server\server.js:15:27) {
  code: 'ERR_REQUIRE_ESM'
}

Node.js v18.16.1

修复方案

1. 用动态import()适配CommonJS环境

如果项目还是CommonJS模块(未设置"type": "module"),不能直接用静态import,必须用动态import(),它返回Promise,需配合async/await或.then():

示例(async/await写法):

// productController.js
// 方法内使用
async function processProductUpload() {
  const formidable = await import('formidable');
  const form = formidable({ multiples: true });
  // 后续处理逻辑
}

// 顶层使用(Node.js 14.8+支持)
// const formidable = await import('formidable');

2. 切换项目为ES模块

想直接用静态import的话,把项目改成ES模块:

  • 在根目录package.json中添加:
    {
      "type": "module"
    }
    
  • 之后所有.js文件默认是ES模块,可直接写:
    import formidable from 'formidable';
    
  • 注意:切换后要把所有require、module.exports替换成ES模块语法。

3. 降级formidable到CommonJS版本

不想改代码结构的话,安装v3之前的兼容版本:

npm uninstall formidable
npm install formidable@2.1.2

安装后可继续用require('formidable')。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:02:49