启动Gulp时遇ERR_REQUIRE_ESM错误,求有效解决方案
Gulp启动失败:Error [ERR_REQUIRE_ESM] 解决指南
问题核心
你遇到的Error [ERR_REQUIRE_ESM]是因为老旧的Gulp 3.9.1(CommonJS规范)和新版gulp-autoprefixer(仅支持ES模块)不兼容,你的Gulpfile用require()引入了ES模块格式的插件,导致Node.js报错。
解决方案
方案1:降级gulp-autoprefixer到兼容版本
这是最直接适配你当前Gulp 3.9.1的方案:
- 卸载当前不兼容的插件版本:
npm uninstall gulp-autoprefixer - 安装最后一个支持CommonJS的
gulp-autoprefixer版本:npm install gulp-autoprefixer@7.0.1 --save-dev
方案2:统一Gulp版本(消除CLI与本地版本差异)
你的Gulp CLI(2.3.0)和本地Gulp(3.9.1)版本差距过大,容易引发额外兼容问题,建议统一:
- 卸载全局Gulp CLI:
npm uninstall -g gulp-cli - 安装适配Gulp 3.9.1的CLI版本:
npm install -g gulp-cli@1.4.0 - 验证版本匹配:
输出应显示CLI版本1.4.0,Local版本3.9.1。gulp -v
方案3:改用ES模块格式编写Gulpfile(不降级插件)
如果想保留新版gulp-autoprefixer,需要将Gulpfile切换为ES模块规范:
- 重命名
gulpfile.js为gulpfile.mjs - 将所有
require()替换为import语法,示例:// 原CommonJS代码 const gulp = require('gulp'); const autoprefixer = require('gulp-autoprefixer'); // 替换为ES模块代码 import gulp from 'gulp'; import autoprefixer from 'gulp-autoprefixer'; - 在项目根目录的
package.json中添加字段:
注意:此方案要求Node.js版本≥14.13.0。"type": "module"
内容的提问来源于stack exchange,提问作者LonezzDex
相关产品推荐
相关产品推荐

