【问题标题】:Vue CLI 3 sass-resources-loader - Options.loaders undefinedVue CLI 3 sass-resources-loader - Options.loaders 未定义
【发布时间】:2018-11-02 16:57:36
【问题描述】:

几周前,使用此处发布的信息,我能够使用 3.0 版 CLI 成功配置新的 Vue 项目以使用 sass-resource-loaderUsing sass-resources-loader with vue-cli v3.x

但是,今天更新所有内容后,我在运行 npm run serve 时遇到以下错误:

TypeError: Cannot read property 'scss' of undefined

似乎被传递到.tap(options) 的唯一选项是:

{ compilerOptions: { preserveWhitespace: false } }

我目前对chainWebpack 的了解还不够,无法有效地进行调试,但我正在努力。如果有人对导致此错误的更改有任何见解,我们将不胜感激。

我的vue.config.js:

const path = require('path')

module.exports = {
  chainWebpack: (config) => {
    config
      .module
      .rule('vue')
      .use('vue-loader')
      .tap((options) => {
        console.log(options)
        options.loaders.scss = options.loaders.scss.concat({
          loader: 'sass-resources-loader',
          options: {
            resources: [
              path.resolve('./src/scss/_variables.scss'),
              path.resolve('./src/scss/_mixins.scss')
            ]
          },
        })
        return options
      })
    config
      .module
      .rule('scss')
      .use('sass-resources-loader')
      .loader('sass-resources-loader')
      .options({
        resources: [
          path.resolve('./src/scss/_variables.scss'),
          path.resolve('./src/scss/_mixins.scss')
        ]
      })
  }
}

【问题讨论】:

标签: javascript webpack vue.js vue-cli


【解决方案1】:

你使用vue-cli@3.x,这可能意味着你的项目使用vue-loader@15.x Since version 15vue-loader 不需要加载程序的额外配置。 你只能配置你的主要 webpack 加载器。

const path = require('path')

module.exports = {
  chainWebpack: (config) => {
    config
      .module
      .rule('scss')
      .use('sass-resources-loader')
      .loader('sass-resources-loader')
      .options({
        resources: [
          path.resolve('./src/scss/_variables.scss'),
          path.resolve('./src/scss/_mixins.scss')
        ]
      })
  }
}

您还可以使用 vue inspect./node_modules/.bin/vue-cli-service inspect 命令检查 webpack 配置。

【讨论】:

  • 我尝试了你的解决方案,但我得到了这个:Module build failed (from ./node_modules/sass-loader/lib/loader.js): undefined ^ Undefined variable: "$brand-color". in C:\dev\git\vue-typescript-test\src\components\HelloWorld.vue (line 60, column 10) 这是一个新的 VueCli 项目
  • 和@ConstantinChirila 有同样的问题
  • @Victor 我设法在没有 sass-resource-loader 的情况下做到了。在你的vue.config.js 添加这个:module.exports = { css: { loaderOptions: { sass: { data: @import "@/scss/_config.scss"; } } } } 你可以在这里查看更多信息:cli.vuejs.org/guide/css.html#pre-processors
  • 更新最后的@ConstantinChirila 评论:您现在应该使用“prependData”而不是现在已弃用的“data”(sass-loader v8)
猜你喜欢
  • 2018-08-11
  • 2018-07-22
  • 2016-05-20
  • 2019-08-25
  • 2021-05-18
  • 2019-12-20
  • 2019-05-07
  • 2023-01-20
  • 1970-01-01
相关资源
最近更新 更多