vue2.x 使用vue-cli搭建项目,引用全局scss 及报错Module build failed: TypeError: this.getResolve is not a function

引用全局scss

1、安装sass-resources-loader插件,然后新建一个var.scss
cnpm install sass-resources-loader --save

例如var.scss:

@charset "UTF-8";

$themeColor: #409eff;

@mixin ellipsis() {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}```

2、然后找到 build/utils.js,将 scss: generateLoaders(‘sass’),修改为如下:


scss: generateLoaders('sass')
    .concat(
      {
        loader: 'sass-resources-loader',
        options: {
          resources: path.resolve(__dirname, '../src/assets/css/var.scss') 
        }
      }
    ),

3、使用: main.js 引入 import ‘@/assets/css/var.scss’; 然后在.vue文件中,可以直接使用 $themeColor 变量 和 ellipsis 公用样式了。

报错:Module build failed: TypeError: this.getResolve is not a function


Module build failed: TypeError: this.getResolve is not a function
    at Object.loader (D:\mycode\select-fb\node_modules\[email protected]@sass-loader\dist\index.js:52:26)

 @ ./src/assets/css/var.scss 4:14-363 13:3-17:5 14:22-371
 @ ./src/main.js
 @ multi ./node_modules/[email protected]@webpack-dev-server/client?http://localhost:8081 webpack/hot/dev-server ./src/main.js

原因:安装的sass-loader的版本为最新8.0.0,查看网上资料说是版本过高导致编译错误。

解决方法:

把项目package.json文件中sass-loader版本改为7.3.1。删除依赖包,执行命令,重新安装项目依赖:

cnpm install
然后,启动项目:

npm run dev
就好了!

参考:
https://www.cnblogs.com/wjunwei/p/9235432.html ( vue2.0 使用vue-cli搭建项目,引用全局scss,全局注入变量和方法等)

https://blog.csdn.net/qq_36069339/article/details/100544821 (TypeError: this.getResolve is not a function

https://blog.csdn.net/weixin_37722827/article/details/101755461 (sass-loader高版本的坑)

你可能感兴趣的:(vue,前端,css)