我几周前使用3.0版本的CLI成功配置了一个新的Vue项目,使用sass-resource-loader
使用此处发布的信息:Using 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')
]
})
}
}
答案 0 :(得分:8)
您使用vue-cli@3.x
,这可能意味着您的项目使用vue-loader@15.x
Since version 15,vue-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配置。