答案是运行 npm rebuild node-sass 修复绑定,确认 node 与 node-sass 版本匹配(如 node 18 需 node-sass ≥7.0.0),必要时删 node_modules 和 lock 文件重装;长期推荐迁移到纯 js 的 sass(dart sass),执行 npm uninstall node-sass && npm install sass --save-dev,laravel mix 6+ 原生支持无需额外配置。

在 Laravel 项目中执行 npm run dev 编译 Sass/SCSS 文件时,控制台突然中断并报出类似 Module build failed: Error: Missing binding 或 Cannot find module 'node-sass' 的错误,导致 CSS 无法生成、页面样式丢失,必须立刻定位并修复。
检查 node-sass 绑定是否匹配当前环境
第一步:运行 npm rebuild node-sass。这会强制重新编译 node-sass 的二进制绑定文件,适配你当前的 Node.js 版本和操作系统架构。
第二步:确认 Node.js 版本与 node-sass 兼容。例如 Node.js 18.x 需要 node-sass ≥ 7.0.0;若项目依赖的是旧版(如 v4.14.1),它只支持 Node.js ≤ 14,强行在 Node 18 下运行就会触发 binding missing 错误。
第三步:删掉 node_modules 和 package-lock.json,再执行 npm install。这能清除所有残留的不兼容模块缓存,避免 rebuild 无效时遗留的脏状态。
替换为 dart-sass(推荐长期方案)
方法一:卸载 node-sass 并安装 sass(Dart 实现)
执行 npm uninstall node-sass → npm install sass --save-dev。Laravel Mix 6+ 原生支持 dart-sass,无需修改 webpack.mix.js,且不再受 binding 编译失败困扰。
方法二:显式指定 sass 实现(Mix 5 及以下需手动配置)
在 webpack.mix.js 开头添加:
const mix = require('laravel-mix');<br>mix.webpackConfig({<br> module: {<br> rules: [{<br> test: /\.s[ac]ss$/i,<br> use: ['style-loader', 'css-loader', 'sass-loader'],<br> }],<br> }<br>});
然后确保
sass-loader 版本与 sass 匹配(sass ≥ 1.3.0 对应 sass-loader ≥ 12)。
权限拒绝(Permission denied)错误处理
如果报错含 sh: 1: node_modules/webpack/bin/webpack.js: Permission denied,说明该文件缺少可执行权限。这不是 sudo 能解决的——Mac/Linux 下 npm install 后某些脚本权限丢失很常见。
运行 chmod +x node_modules/webpack/bin/webpack.js 即可修复。注意不要用 chmod 777,那会带来安全隐患,【+x 就够了,仅赋予执行权限】。
cross-env 在 Mac 上根本不需要
如果你在 Mac 上看到 cross-env: not found,别装 cross-env,也别加 sudo。Mac 终端原生支持 NODE_ENV=development 这种写法,Laravel 默认 package.json 中 scripts 里的 cross-env 就是为 Windows 准备的冗余项。
直接编辑 package.json,把 "dev": "cross-env NODE_ENV=development ..." 改成 "dev": "NODE_ENV=development ...",删掉 cross-env 前缀和对应 devDependencies 里的 "cross-env": "^7.0" 行,再 npm install。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











