错误源于css-loader v6+将localIdentName移入modules对象,须改为modules.localIdentName;旧版可降级至css-loader@5.2.7兼容Webpack 4。

css-loader 报 locakIdentName 未知属性错误
这个错误不是拼写失误,而是新版 css-loader(v6+)把配置项挪进了 modules 对象里。旧写法 localIdentName 直接挂在 options 下,现在必须写成 modules.localIdentName。
- 错误配置示例:
{ modules: true, locakIdentName: '[local]_[hash:base64:5]' }(注意还有个拼写错) - 正确写法:
{ modules: { localIdentName: '[local]_[hash:base64:5]' } } - 如果项目用的是 Vue CLI 4(Webpack 4),别硬上
css-loader@6+——它只认 Webpack 5,降级到css-loader@5.2.7更稳 -
postcss-loader@7+和sass-loader@13+同样有此限制,别单独升级其中一个
sass-loader 报 this.getOptions is not a function
这说明 sass-loader 版本和 Webpack 不匹配。Webpack 4 没这个 API,Webpack 5 才加的。Vue CLI 4 默认用 Webpack 4,所以装 sass-loader@12+ 必报错。
- Vue CLI 4 / Webpack 4 → 用
sass-loader@10.4.1或@11.1.1(实测兼容性好),配sass@1.70.0 - 别混装
node-sass和sass:运行npm ls node-sass和npm ls sass确认只有一个存在 - 删掉
vue.config.js里所有implementation: require('node-sass')或require('sass')——现代sass-loader会自动找sass包 - 清缓存:
rm -rf node_modules/.cache,否则 loader 可能还在用旧二进制
@use 报 Module not found 但路径没错
这不是路径问题,是 Dart Sass 模块系统没激活。只要文件里有一处 @import,整份 SCSS 就退化成 legacy 模式,@use 被静默忽略。
-
@use必须是文件第一行非注释、非空行;不能包在@media或@mixin里 - 被引入文件名必须以下划线开头,例如
_variables.scss,写成variables.scss就找不到 - 路径不能带
.scss后缀:@use '@/styles/_variables'✅,@use '@/styles/_variables.scss'❌ - 确认已卸载
node-sass并安装sass,否则@use语法根本不会解析
第三方库(如 element-ui)样式编译失败
常见报错是 Can't resolve 'element-ui/lib/theme-chalk/index.css',本质是 sass-loader 遇到 .css 文件时试图当 Sass 模块处理,但它不是。
立即学习“前端免费学习笔记(深入)”;
- 不要在 SCSS 里
@import第三方 CSS 文件,改用 Webpack 的style-loader+css-loader单独处理 - 确保
webpack配置中.css规则在.scss规则之前,避免被 sass-loader 拦截 - Element UI 2.x 的主题文件本身是 CSS,直接
@import它的 SCSS 源码(element-ui/packages/theme-chalk/src/index.scss)更可控 - 若用了
~别名(如@import '~element-ui/packages/theme-chalk/src/index.scss'),必须在sass-loader配置里开webpackImporter: true
npm ls,比盲目重装高效得多。


















