Mac M3芯片运行laravel-mix命令时出现Webpack错误求助
Mac M3芯片下Laravel Mix/Webpack执行命令报错Unknown system error -86
问题描述
项目已安装最新版本的laravel-mix、webpack及其他依赖,本地设备为Mac M3芯片。执行npm run watch、npm run dev或npm run prod命令时,出现以下错误:
[webpack-cli] Error: spawn Unknown system error -86 at ChildProcess.spawn (node:internal/child_process:421:11) at spawn (node:child_process:761:9) at Object.execFile (node:child_process:351:17) at module.exports.fileCommandJson (/node_modules/webpack-notifier/node_modules/node-notifier/lib/utils.js:88:13) at NotificationCenter.notifyRaw (/node_modules/webpack-notifier/node_modules/node-notifier/notifiers/notificationcenter.js:81:11) at WebpackNotifierPlugin.compilationDone (/node_modules/webpack-notifier/index.js:129:14) at _next1 (eval at create (/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:39:1) at eval (eval at create (/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:63:1) { errno: -86, code: 'Unknown system error -86', syscall: 'spawn' }
已尝试的操作:
- 通过NVM安装Node
- 执行
softwareupdate --install-rosetta - 更换不同版本的webpack-notifier
错误原因
错误码-86对应Bad CPU type in executable,本质是webpack-notifier依赖的node-notifier调用的通知工具为x86架构,与Mac M3的ARM64架构不兼容。即使安装了Rosetta,嵌套依赖中的执行文件仍无法正确适配ARM架构,导致spawn调用失败。
修复方案
方案1:禁用webpack-notifier插件
如果不需要编译完成的桌面通知,直接在webpack.mix.js中移除或注释掉相关配置:
// 注释或删除以下类似代码 // const WebpackNotifierPlugin = require('webpack-notifier'); // mix.webpackConfig({ // plugins: [new WebpackNotifierPlugin()] // });
方案2:替换为ARM兼容的通知工具
- 安装Homebrew版的ARM架构
terminal-notifier:brew install terminal-notifier - 在项目根目录创建
.npmrc文件,添加以下内容指定通知工具路径:terminal-notifier=/opt/homebrew/bin/terminal-notifier - 删除
node_modules和package-lock.json,重新安装依赖:rm -rf node_modules package-lock.json npm install
方案3:降级Laravel Mix到兼容版本
最新版Laravel Mix搭配的webpack-notifier版本存在兼容性问题,尝试降级到经测试稳定的v6.0.49:
npm uninstall laravel-mix npm install laravel-mix@6.0.49 --save-dev
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

