Ubuntu 16.4 VPS上Laravel-mix执行npm run production报错求助
解决Laravel Mix执行
npm run production时的SyntaxError问题 你遇到的问题核心原因很明确:你的Node.js版本太老了。Node v4.2.6对ES6的支持非常有限,而当前使用的Laravel Mix版本已经用到了ES6的块级作用域声明(也就是代码里的let关键字),老版本Node无法识别这个语法,所以才抛出了SyntaxError。
下面是具体的解决步骤:
1. 升级Node.js和npm到兼容版本
Laravel 5.6官方要求的Node版本至少是8.10.0,npm版本至少是5.6.0,我们先把旧版本替换掉:
- 卸载系统里的旧版本Node和npm:
sudo apt-get remove nodejs npm -y - 添加适配Ubuntu 16.04的Node.js 8.x源:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - - 安装新版本Node.js:
sudo apt-get install -y nodejs - 验证版本是否达标:
node -v # 应该输出v8.x.x格式的版本号 npm -v # 应该输出5.x及以上版本号
2. 重新安装项目依赖
之前的node_modules是基于老Node版本安装的,存在兼容性问题,需要清理后重新安装:
- 删除旧的依赖文件夹和锁文件:
rm -rf node_modules package-lock.json - 重新安装所有依赖:
npm install
3. 重新执行生产构建
现在再运行生产环境构建命令,应该就能正常执行了:
npm run production
备选方案(不推荐)
如果暂时无法升级Node版本,你可以尝试安装兼容Node 4.x的Laravel Mix旧版本(比如2.x系列):
- 修改项目根目录下
package.json里的laravel-mix版本为^2.1 - 执行
npm install重新安装依赖
但还是强烈建议升级Node版本,老版本不仅缺少必要的新特性,还可能存在未修复的安全漏洞,后续维护成本会更高。
内容的提问来源于stack exchange,提问作者bwen
相关产品推荐
相关产品推荐

