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

Node Modules导入报错:gulp调用globby触发ERR_REQUIRE_ESM问题求助

问题描述

错误输出

PS C:\Users\Us1\MyProject\src\Project.web> npm run create-bundles

> projectweb@1.0.0 create-bundles
> gulp buildDev

Error [ERR_REQUIRE_ESM]: require() of ES Module C:\Users\Us1\MyProject\src\Project.web\node_modules\globby\index.js from C:\Users\Us1\MyProject\src\Project.web\gulpfile.js not supported.
Instead change the require of index.js in C:\Users\Us1\MyProject\src\Project.web\gulpfile.js to a dynamic import() which is available in all CommonJS modules.
    at Object.<anonymous> (C:\Users\Us1\MyProject\src\Project.web\gulpfile.js:5:14) {
  code: 'ERR_REQUIRE_ESM'
}

命令create-bundles用于执行gulp buildDev,为开发环境构建依赖资源。

环境信息

  • npm -v: 9.6.2
  • node -v: v18.15.0
  • gulp -v: CLI version 2.3.0,Local version 4.0.2(已升级)
  • yarn -v: 1.22.19
  • 系统环境:x64位Windows 11企业版虚拟机,安装有Visual Studio Enterprise 2022

已尝试的无效操作

  1. 知识库调研:在技术社区搜索解决方案,未找到匹配当前版本组合的有效方案,尝试切换Node版本的建议未解决问题。
  2. 查找版本兼容矩阵:未找到Gulp或Node官方提供的明确版本兼容矩阵。
  3. 切换Yarn并升级Gulp:将本地Gulp升级至4.0.2后,执行命令仍报错。
  4. 生成npm-shrinkwrap.json锁定依赖:仅锁定graceful-fs版本,无效果。
  5. 清理缓存重新执行:清理npm缓存后重新运行命令,问题依旧。

解决方案

方案1:降级globby到CommonJS兼容版本

当前报错核心是globby从v12版本起改为纯ESM模块,而你的gulpfile.js是CommonJS格式,无法用require()加载ESM模块。直接降级globby到支持CommonJS的最高版本(v11.x)即可:

  1. 在项目package.json中添加/修改依赖:
"dependencies": {
  "globby": "^11.1.0"
}
  1. 删除node_modules文件夹和package-lock.json/yarn.lock文件
  2. 重新安装依赖:
npm install
# 或使用Yarn
yarn install

方案2:修改gulpfile.js使用动态import

如果不想降级依赖,可将gulpfile.js中对globby的require改为异步动态导入(CommonJS模块支持该语法):
原代码(约第5行):

const globby = require('globby');

修改为:

async function getTargetFiles() {
  const { default: globby } = await import('globby');
  return globby(['你的文件匹配规则']);
}

// 对应调整gulp任务为异步函数
gulp.task('buildDev', async function() {
  const files = await getTargetFiles();
  // 后续任务逻辑
});

方案3:将gulpfile转为ESM格式

  1. 将gulpfile.js重命名为gulpfile.mjs
  2. 替换所有require为import语法,例如:
import gulp from 'gulp';
import globby from 'globby';
  1. 在项目根目录package.json中添加:
"type": "module"

注意:此方案需确保所有依赖均支持ESM格式,若有旧版Gulp插件不兼容,需同步升级插件。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:08:08