sass全局变量配置

Vue sass全局变量的使用


css :variables.scss

$themeColor: #409eff;

在组件中使用

<style lang='scss'>
  .block2 {
    background: $themeColor;
  }
</style>

报如下错误:

 error  in ./src/components/focus-city/index.vue?vue&type=style&index=0&lang=scss&scope=true&

Module build failed (from ./node_modules/sass-loader/dist/cjs.js):
SassError: Undefined variable: "$themeColor".
        on line 197 of /Users/bing/Desktop/TDT/ipd-web/library/src/components/focus-city/index.vue
>>         background: $themeColor;

   --------------------^


 @ ./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/style
PostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/d
ist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/focus-city/index.vue?vue&type=style&index=0&lang=scss&scope=true
& 4:14-465 14:3-18:5 15:22-473
 @ ./src/components/focus-city/index.vue?vue&type=style&index=0&lang=scss&scope=true&
 @ ./src/components/focus-city/index.vue
 @ ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/v
ue-loader/lib??vue-loader-options!./src/views/Home.vue?vue&type=script&lang=js&
 @ ./src/views/Home.vue?vue&type=script&lang=js&
 @ ./src/views/Home.vue
 @ ./src/views lazy ^\.\/.*$ namespace object
 @ ./src/utils/menuToRouterArr.js
 @ ./src/permission.js
 @ ./src/main.js
 @ multi (webpack)-dev-server/client?http://10.131.18.90:8081/sockjs-node (webpack)/hot/dev-server.js ./src/main.js

 error  in ./src/views/doc/pages/focus-city.vue?vue&type=style&index=0&lang=scss&

Module build failed (from ./node_modules/sass-loader/dist/cjs.js):
SassError: Undefined variable: "$themeColor".
        on line 94 of /Users/bing/Desktop/TDT/ipd-web/library/src/views/doc/pages/focus-city.vue
>>   background: $themeColor;

   --------------^


 @ ./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/doc/pages/focus-city.vue?vue&type=style&index=0&lang=scss& 4:14-477 14:3-18:5 15:22-485
 @ ./src/views/doc/pages/focus-city.vue?vue&type=style&index=0&lang=scss&
 @ ./src/views/doc/pages/focus-city.vue
 @ ./src/views lazy ^\.\/.*$ namespace object
 @ ./src/utils/menuToRouterArr.js
 @ ./src/permission.js
 @ ./src/main.js
 @ multi (webpack)-dev-server/client?http://10.131.18.90:8081/sockjs-node (webpack)/hot/dev-server.js ./src/main.js

解决方法:
1、安装完sass依赖包:

npm install sass-resources-loader --save-dev

2、相关配置
vue-cli3.0创建的项目
在vue.config.js文件中配置,官网配置

module.exports = {
  css: {
    loaderOptions: {
      sass: {
        // 旧版 在 sass-loader v7 中,选项名使用data
        data: `@import "~@/assets/scss/variables.scss";` 
        // 新版sass-loader,选项名使用prepend
        prependData: `@import "~@/assets/scss/variables.scss";`
      }
    }
  }
};

注:1、本配置适用于.scss .sass文件(<style lang="scss"></style>)
<style></style>直接css的样式不能用
2、默认情况下 sass 选项会同时对 sassscss 语法同时生效,因为 scss 语法在内部也是由 sass-loader 处理的。但是在配置 dataprepend选项的时候.scss语法要求以分号结尾,.sass语法要求必须没有分号。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值