跳至主要內容

解决 Vite 引入 variables 变量样式文件报错 This file is already being loaded 问题

Bing🐣2023年2月4日VueViteVueViteScss大约 1 分钟

解决 Vite 引入 variables 变量样式文件报错 This file is already being loaded 问题

之前脚手架使用的 Vue Cli 的时候,一般样式文件会定义一个变量样式文件,如variables.scss,会在vue.config中全局引入,而variables.scss中也会通过:export的形式将变量导出,这样也方便在其他文件如 js 中引入相关变量。

variables.scss
$main-color: #2f54eb;

:export {
  mainColor: $main-color;
}

Vite 引用问题

在 Vite 中同样也可以vite.config中进行全局变量的引入,如下形式:

css: {
  preprocessorOptions: {
    scss: {
      additionalData: `
          @import "./src/styles/variables.scss";
        `
    }
  }
}

此时在其他文件如 js 中通过import variables的形式引入该文件的时候会报一个This file is already being loaded.的错误,大致意思该文件已经全局引入了,不能够在其他地方再次引入,网上 Google 搜索了一圈也没看到啥好的解决方法,最后只找到一个取巧的方式。

取巧方式

由于在vite.config中已经全局引入variables.scss文件,在 scss 文件中都可以使用里面的变量,所以可以新建一个variables.module.scss的文件,里面只需要留导出变量的内容。

:export {
  mainColor: $main-color;
}

这样其他文件在需要使用variables.scss中变量的时候只需要import variables.module.scss文件即可,这样就不会触发全局引入的情况下在其他文件再次引入的时候报错问题。