Laravel Mix编译资产时出现WebAssembly内存不足错误如何解决
问题排查与解决方案
故障根因
该报错是Webpack 5默认启用的wasm-hash哈希计算模块在当前运行环境下触发WebAssembly内存溢出导致,即便服务器整体内存充足,也可能因为Node内存限制、算法适配问题触发报错。
解决方案
方案1:替换Webpack哈希算法(优先推荐,生效最快)
在项目根目录的webpack.mix.js文件中添加Webpack配置,替换默认的WASM哈希算法:
const mix = require('laravel-mix'); // 新增webpack配置段 mix.webpackConfig({ output: { hashFunction: 'xxhash64' } }); // 原有Mix配置保持不变,例如mix.js()、mix.css()等逻辑
修改后重新执行npm run dev或npm run prod即可。
方案2:提升Node.js内存上限
Node.js默认对内存使用有上限限制,即便服务器有8G内存,默认配置下Node也只能使用最多2G左右内存,可通过修改启动参数提升上限:
修改项目根目录package.json中的scripts配置:
{ "scripts": { "dev": "node --max-old-space-size=4096 node_modules/.bin/mix", "prod": "node --max-old-space-size=4096 node_modules/.bin/mix --production" } }
其中--max-old-space-size=4096表示给Node进程分配4G内存,可根据服务器剩余内存调整数值。
方案3:排查环境适配问题
- 执行
free -h查看服务器当前空闲内存,确认编译时至少有2G以上可用内存,无其他高占用进程抢占资源。 - 若使用的是最新版Laravel Mix,可降级到v6.0.49稳定版规避适配问题,执行命令:
npm install laravel-mix@6.0.49 --save-dev - 清理本地依赖缓存:删除
node_modules文件夹、package-lock.json文件后重新执行npm install安装依赖。
内容的提问来源于stack exchange,提问作者SW Dev
相关产品推荐
相关产品推荐

