执行npm run watch时出现NPM错误:scss参数1配置异常求助
解决Laravel Mix执行
npm run watch时的assert.js错误 嘿,我碰到过类似的问题,这大概率是你在webpack.mix.js里给scss()方法传的参数格式不对导致的。咱们来一步步搞定它:
问题根源
Laravel Mix的scss()方法对第一个参数的格式有要求——它没法直接识别你传的那种未正确配置的文件列表,内部的断言检查过不去,就炸出了assert.js里的错误。
两种可行的解决办法
方法1:用主入口文件统一导入(推荐)
这是Mix官方更推荐的方式,后续维护也方便:
- 在
resources/sass下面建一个主文件,比如app.scss - 把所有需要的SCSS文件都导入到这个主文件里:
// app.scss @import './components/button.scss'; @import './layouts/header.scss'; // 把你要用的其他SCSS文件都加在这儿
- 然后在
webpack.mix.js里只指定这个主入口就行:
mix.scss('resources/sass/app.scss', 'public/css');
方法2:正确传入多文件数组
如果你非得直接传多个文件,得保证路径没问题,而且用Mix支持的格式:
要是想把多个文件合并成一个CSS文件,这么写:
mix.sass([ 'resources/sass/file1.scss', 'resources/sass/file2.scss' ], 'public/css/combined.css');
要是想每个文件单独编译成对应的CSS,就链式调用:
mix.scss('resources/sass/file1.scss', 'public/css') .scss('resources/sass/file2.scss', 'public/css');
额外排查小技巧
要是上面的方法还没解决,试试这几步:
- 清一下Mix的缓存:跑
npm run clear,或者手动删掉node_modules/.cache文件夹 - 重装依赖:先删了
node_modules和package-lock.json,再跑npm install - 检查版本兼容性:确保你的Laravel Mix版本和Laravel项目版本匹配(比如Laravel 8对应Mix 6.x,Laravel 9及以上用Mix 6.x或更高版本)
内容的提问来源于stack exchange,提问作者Ricardo Villagrana
相关产品推荐
相关产品推荐

