执行gulp build时突发node_module错误:Unexpected token {
问题分析与解决方案
从你的错误日志来看,核心问题是当前运行的Node.js版本不支持ES6的解构赋值语法——具体是const {builtinModules} = require('module');这一行的{}解构写法,在低版本Node.js(v6.0以下)里无法识别,所以抛出了SyntaxError: Unexpected token {。
为什么之前能成功,现在突然失败?
你提到自己只修改了一行兼容IE的代码,没碰过依赖,但大概率是以下原因之一:
- 项目依赖(比如
builtin-modules)被自动更新到了更高版本:这个包的v2.x版本开始使用ES6解构,而v1.x版本兼容旧Node。如果你的package.json里这个包的版本范围是^1.x.x或未锁定版本,重新安装依赖时就会自动升级到不兼容的v2+版本。 - 构建环境的Node.js版本被更换:比如CI服务器上的Node版本被降级/更新,导致现在用的版本比之前成功构建时的版本低。
具体解决步骤
先检查当前Node.js版本
在终端运行:node -v如果输出是v6.0以下的版本(比如v4.x),那肯定是版本问题。
方案一:升级Node.js版本(推荐)
升级到Node.js的LTS版本(比如当时的v8.x或v10.x,也可以选择当前更稳定的LTS版本),这些版本完全支持ES6解构语法,升级后重新执行gulp build应该就能解决问题。方案二:锁定依赖版本(如果无法升级Node)
- 打开
package.json,添加或修改builtin-modules的版本为兼容旧Node的版本:"builtin-modules": "^1.1.1" - 删除现有的
node_modules文件夹和package-lock.json(或yarn.lock):rm -rf node_modules package-lock.json - 重新安装依赖:
npm install
这样就能强制安装兼容旧Node版本的
builtin-modules,避免解构语法的报错。- 打开
验证构建
重新执行gulp build,确认错误是否消失。
内容的提问来源于stack exchange,提问作者bigad1992
相关产品推荐
相关产品推荐

