【问题标题】:How to setup SASS/SCSS/sass-loader in Nuxt如何在 Nuxt 中设置 SASS/SCSS/sass-loader
【发布时间】:2021-10-14 03:23:33
【问题描述】:

我有一个 Nuxt 应用,我想使用 CSS 预处理器。
我安装了sass-loaderfibers依赖项,但是安装后,应用程序控制台中会出现一条消息,我在图像和代码中呈现了该消息

这是代码错误:

 WARN  webpack@5.49.0 is installed but ^4.46.0 is expected                                                                                                                                                                     17:22:44


 WARN  sass-loader@12.1.0 is installed but ^10.1.1 is expected

     


Rule can only have one resource source (provided resource and test + include + exclude) in {                                                                                                                           17:22:46
  "use": [
    {
      "loader": "/home/sergey/all_project/pro_projects_all_language/empty/node_modules/babel-loader/lib/index.js",
      "options": {
        "configFile": false,
        "babelrc": false,
        "cacheDirectory": true,
        "envName": "server",
        "presets": [
          [
            "/home/sergey/all_project/pro_projects_all_language/empty/node_modules/@nuxt/babel-preset-app/src/index.js",
            {
              "corejs": {
                "version": 3
              }
            }
          ]
        ]
      },
      "ident": "clonedRuleSet-29[0].rules[0].use[0]"
    }
  ]
}

  "use": [
  {
  "loader": "node_modules/babel-loader/lib/index.js",
  "options": {
  "configFile": false,
  "babelrc": false,
  "cacheDirectory": true,
  "envName": "server",
  "presets": [
  [
  "node_modules/@nuxt/babel-preset-app/src/index.js",
  {
  "corejs": {
  "version": 3
  }
  }
  ]
  ]
  },
  "ident": "clonedRuleSet-29[0].rules[0].use[0]"
  }
  ]
  }
  at checkResourceSource (node_modules/@nuxt/webpack/node_modules/webpack/lib/RuleSet.js:167:11)
  at Function.normalizeRule (node_modules/@nuxt/webpack/node_modules/webpack/lib/RuleSet.js:198:4)
  at node_modules/@nuxt/webpack/node_modules/webpack/lib/RuleSet.js:110:20
  at Array.map (<anonymous>)
  at Function.normalizeRules (node_modules/@nuxt/webpack/node_modules/webpack/lib/RuleSet.js:109:17)
  at new RuleSet (node_modules/@nuxt/webpack/node_modules/webpack/lib/RuleSet.js:104:24)
  at new NormalModuleFactory (node_modules/@nuxt/webpack/node_modules/webpack/lib/NormalModuleFactory.js:115:18)
  at Compiler.createNormalModuleFactory (node_modules/@nuxt/webpack/node_modules/webpack/lib/Compiler.js:636:31)
  at Compiler.newCompilationParams (node_modules/@nuxt/webpack/node_modules/webpack/lib/Compiler.js:653:30)
  at Compiler.compile (node_modules/@nuxt/webpack/node_modules/webpack/lib/Compiler.js:661:23)
  at node_modules/@nuxt/webpack/node_modules/webpack/lib/Watching.js:77:18
  at AsyncSeriesHook.eval [as callAsync] (eval at create (node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:24:1)
  at AsyncSeriesHook.lazyCompileHook (node_modules/tapable/lib/Hook.js:154:20)
  at Watching._go (node_modules/@nuxt/webpack/node_modules/webpack/lib/Watching.js:41:32)
  at node_modules/@nuxt/webpack/node_modules/webpack/lib/Watching.js:33:9
  at Compiler.readRecords (node_modules/@nuxt/webpack/node_modules/webpack/lib/Compiler.js:529:11)

我尝试重新安装依赖项,重新安装一个完全干净的 Nuxt 应用程序,但问题仍然存在。

【问题讨论】:

    标签: nuxt.js


    【解决方案1】:

    要在 Nuxt 中安装 SASS,您必须运行 yarn add -D sass sass-loader@10.1.1(或 npm i -D sass-loader@10.1.1 --save-exact &amp;&amp; npm i -D sass)。

    sass-loader 的版本需要准确并设置为最新的10.x.x,因为下一个 (11.0.0) 使用的是 Webpack5,因此这是一个重大更改,因为 Nuxt2 仅在 Webpack4 上运行,如下所示: https://github.com/webpack-contrib/sass-loader/releases

    如果那么,您仍然不能在您的.vue 组件中使用&lt;style lang="sass"&gt;,然后继续。


    将此添加到您的 nuxt.config.js 文件中

    export default {
      build: {
        loaders: {
          sass: {
            implementation: require('sass'),
          },
          scss: {
            implementation: require('sass'),
          },
        },
      }
    }
    

    这是一个working repo,最新推荐的sass (dart-sass) 设置可以正常使用这种代码

    <template>
      <div>
        <span class="test">
          Hello there
        </span>
      </div>
    </template>
    
    <style lang="sass" scoped>
    div
      .test
        color: red
    </style>
    

    PS:如果 SASS 安装正确,那么 SCSS 也可以正常工作,因为它基本上是一样的。


    如果您对某些已弃用的内容(例如 / for divison 或此处列出的任何内容)有一些警告:https://sass-lang.com/documentation/breaking-changes
    您可以参考此答案进行修复:https://stackoverflow.com/a/68648204/8816585

    【讨论】:

    • 我已经在 Nuxt 上写作 1 年了。我一直使用 scss,我有一个项目,在那里一切正常,但我想改变应用程序的概念并决定重写一些活页夹,并且在我的空项目中,当我执行 ——说是错误,我也可以显示,但是已经和我刚才给出的不一样了。我使用了 Nuxt 文档,但仍然没有任何帮助。我按照你说的做了,我也有同样的错误……你能不能尝试安装一个干净的项目,做同样的事情并说出结果?
    • 我不怀疑你的资格)事实上我知道如何使用SASS和SCSS,我已经使用它们很长时间了,但是我在启动应用程序时出现错误,我什至还没有在组件中编写样式。并且应用程序不再启动。
    • 我让信使显示屏幕上的视频,会发生什么以及何时
    • 个人资料本质上是为了让您与我联系。我不知道您的设置是什么以及您习惯了什么,但我至少可以为您提供一个工作设置(在我的回答中提供)。然后,您可以进行调查并找出问题出在哪里。 @dotenv9
    • nuxt3 呢?
    猜你喜欢
    • 2018-09-19
    • 2019-03-02
    • 2021-03-29
    • 2019-10-30
    • 2017-05-29
    • 2016-05-20
    • 2020-07-10
    • 2015-11-11
    • 2020-08-05
    相关资源
    最近更新 更多