【发布时间】:2020-08-14 10:41:45
【问题描述】:
我正在尝试将以下 SASS 变量导出到我的 Vue 项目中的 Javascript。
_export.sass
:export
colorvariable: blue
othercolorvariable: red
我正在关注this post 中的响应作为模板。但是,当我尝试在下面导入我的 sass 文件时...
About.vue
<script>
import styles from "@/styles/_export.sass";
export default {
name: "About",
data() {
return { styles };
}
};
</script>
我收到以下错误:
WAIT Compiling... 2:17:03 AM
98% after emitting CopyPlugin
ERROR Failed to compile with 1 errors 2:17:03 AM
error in ./src/styles/_export.sass
Module build failed (from ./node_modules/sass-loader/dist/cjs.js):
SassError: Invalid CSS after '...les/main.sass";': expected 1 selector or at-rule, was "export: {"
on line 1 of /Users/MatthewBell/GitHub/pollify/client/src/styles/_export.sass
>> @import "@/styles/main.sass";
-----------------------------^
@ ./src/styles/_export.sass 4:14-227 14:3-18:5 15:22-235
@ ./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/vue-loader/lib??vue-loader-options!./src/views/About.vue?vue&type=script&lang=js&
@ ./src/views/About.vue?vue&type=script&lang=js&
@ ./src/views/About.vue
@ ./src/router/index.js
@ ./src/main.js
@ multi (webpack)-dev-server/client?http://192.168.2.37:8080/sockjs-node (webpack)/hot/dev-server.js ./src/main.js
如果我删除 import styles from "@/styles/_export.sass"; 代码编译正常。
我研究了这个错误,发现 this post here 这似乎暗示我的 Vue 配置文件设置不正确。这是我的vue.config.js
module.exports = {
css: {
loaderOptions: {
sass: {
prependData: `@import "@/styles/main.sass"`
}
}
}
};
请注意,上面引用的 main.sass 不会导入 _export.sass。同样,在我尝试将 _export.sass 导入到我的 JS 文件之前,这对我来说效果很好。
我想在JS脚本中导入_export.sass变量,如上图,如何实现呢?
【问题讨论】:
-
Sass 导入必须始终是相对导入。 Webpack 知道您的意思是您的 src 文件夹带有“@”(可能是因为某处的别名设置)并在编译时将它们替换为 JS 文件,但不能为您的 sass 执行此操作。更改这可能会使您的导入语句有效。
-
那个导入虽然有效......它是试图在“about.vue”中导入“styles”的导入行导致错误。如果我删除它,其他导入工作正常
-
文档中甚至提到我可以在配置文件中专门使用@,不要认为这是问题
-
啊,当我尝试使用 prependData 进行 vuetify 的 sass 变量导入时,这是我遇到的警告之一,但我使用的是非 Vue CLI webpack 配置。我能想到的唯一情况是它可能是您的加载程序所在的顺序,因为一旦它交给 sass-loader 似乎它已经被转换了(我认为这是因为分号和括号的存在)。希望其他人有更确定的答案!
-
我同意我也认为它与装载机订单有关,但似乎无法修复它
标签: javascript vue.js webpack sass