Sass:使用@use 和@forward 时的模块循环

Bar*_*ans 5 javascript sass webpack vue.js

在我中,style.scss我正在使用以下方法加载 scss 文件:

@use "bootstrap/functions";
Run Code Online (Sandbox Code Playgroud)

稍后style.scss我加载了另一个名为 .css 的 scss 文件_variables.scss。在这个文件中,我还想使用函数文件,例如:

$link-color:                functions.theme-color("primary") !default;
@include functions.assert-ascending($grid-breakpoints, "$grid-breakpoints");
Run Code Online (Sandbox Code Playgroud)

问题是我收到以下错误:

SassError: Module loop: this module is already being loaded.
   ???> src/assets/scss/bootstrap/_variables.scss
4  ? @forward "functions";
   ? ^^^^^^^^^^^^^^^^^^^^ new load
   ?
   ???> src/assets/scss/style.scss
22 ? @use "bootstrap/functions";
   ? ?????????????????????????? original load
   ?
Run Code Online (Sandbox Code Playgroud)

我尝试使用@useand加载它@forward,我也尝试不加载它以查看它是否可以在当前上下文中找到它,但没有任何效果。我究竟做错了什么?

我正在将 Webpack 与sass-loader使用dart-sass.

小智 3

由于@import2022 年 10 月折旧,我目前遇到了同样的问题。

这是因为您有效地将引导程序/函数加载到您的style.scss两次中,一次作为其本身,一次在_variables.scss.

因为@use不是全局的,所以@import它似乎会自动拒绝任何重复项,抛出错误而不是忽略重复项。