根本原因是@import路径错误或未被解析,如路径书写错误、缺少扩展名、相对路径层级不当,导致SCSS文件未被编译进最终CSS中。
很多样式不生效,根本原因是 Sass 文件里用 @import 引入的依赖根本没被编译进去——比如路径写错、扩展名漏写、或用了不支持的相对路径层级。
@import,必须写全路径和扩展名,例如:@import "base/_variables.scss";,不能只写 @import "base/variables";
sass-loader,注意它默认不处理 .sass 文件里的 @import(只认 .scss),除非显式配置 implementation: require('sass') 并启用 additionalData 等兼容逻辑sass --watch src/main.scss dist/main.css 默认以 main.scss 所在目录为根,所有 @import 都是相对于该目录解析,不是相对于被 import 的文件样式“看似写了却没效果”,常因变量被后加载的文件覆盖,尤其在多人协作或引入第三方主题时。
$primary-color: #007bff !default; 只在变量未定义时生效;一旦前面某处已赋值(哪怕只是 $primary-color: null;),后续 !default 就完全失效@import,否则你的 $border-radius: 8px 可能早于框架中 $border-radius: 4px !default 被读取,最终用的还是默认值@debug $primary-color;,看终端输出的实际值,比猜更可靠编译出来的 CSS 规则存在,但浏览器开发者工具里显示 strikethrough(删除线),说明被更高特异性的规则干掉了——这和 Sass 编译本身无关,但容易误判为“编译失败”。
.card { .header { .title { color: red; } } } 编译成 .card .header .title,特异性远高于你预期的 .title 单独选择器& 的副作用:如 .btn { &--primary { ... } } 生成的是 .btn.btn--primary,而如果你本意是独立类名 btn--primary,就得写成 .btn--primary { ... }
有时候你以为样式没生效,其实是 sourcemap 指向了错误的 Sass 行,让你改了 A 行却以为在调 B 行,反复折腾无效。
.css.map 文件是否真实存在、路径可访问(尤其在生产构建中常被忽略)sass-loader 的 sourceMap 选项必须与 devtool 配置协同,例如 devtool: 'source-map' + sassLoaderOptions: { sourceMap: true },缺一不可HelloKittyMyDreamStore新手开局攻略HelloKittyMyDreamStore零基础入门玩法指南
暗黑不朽秘境暗黑不朽秘境手游高效刷级与快速升级实战指南
超维进化手游荒野游侠怎么玩|荒野游侠角色培养、副本攻略与实战技巧详细说明
铸兵之王最强装备排行榜一览铸兵之王全流派毕业装备推荐
小米路由4a千兆版500兆怎么设置(小米路由4a千兆版500兆设置方法)
宗师之上心法选择攻略宗师之上最强心法搭配与进阶实用技巧