javascript - Webpack 不会编译带有背景图像的 SASS

标签 javascript node.js npm webpack sass

我在编译 SASS 代码时遇到问题。 我想使用背景图像,但是当我尝试这个时,我所有的 css 都停止工作了。

我的 SASS 文件如下所示

@import "~bootstrap/scss/bootstrap";
@import "constants";

#crossroad {
  position:relative;
  background-image: url("../assets/bg.jpg");
}

我的Webpack.config

const path = require('path');

module.exports = {
  entry: './src/app.js',
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')
  },
  mode: "development",
  module: {
    rules: [
      {
        test: /\.(scss|png|jpg)$/,
        use: [
          {
            // Adds CSS to the DOM by injecting a `<style>` tag
            loader: 'style-loader'
          },
          {
            // Interprets `@import` and `url()` like `import/require()` and will resolve them
            loader: 'css-loader'
          },
          {
            // Loader for webpack to process CSS with PostCSS
            loader: 'postcss-loader',
            options: {
              plugins: function () {
                return [
                  require('autoprefixer')
                ];
              }
            }
          },
          {
            // Loads a SASS/SCSS file and compiles it to CSS
            loader: 'resolve-url-loader'
          },
          {
            // Loads a SASS/SCSS file and compiles it to CSS
            loader: 'sass-loader'
          }
        ]
      }
    ]
  }
};

错误消息:

ERROR in ./src/assets/bg.jpg (./node_modules/css-loader/dist/cjs.js!./node_modules /postcss-loader/src??ref--4-2!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js!./src/assets/bg.jpg)
Module build failed (from ./node_modules/sass-loader/dist/cjs.js):
SassError: Invalid CSS after "����": expected "{", was ""
on line 1 of /Users/adrianmindek/Code/PersonalPage/src/assets/bg.jpg

����
^
@ ./src/assets/bg.jpg 2:26-236
@ ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/src??ref-- 4-2!./node_modules/resolve-url-loader!./node_modules/sass-loader/dist/cjs.js!./src/scss/app.scss
@ ./src/scss/app.scss
@ ./src/app.js

我尝试添加resolve-url-loader我的 webpack 配置,但没有任何改变。

最佳答案

您应该像这样使用文件加载器处理文件

rules: [{
                test: /\.scss$/,
                use: [
                    'style-loader',
                    MiniCssExtractPlugin.loader,
                    {
                        loader: "css-loader",
                        options: {
                            minimize: true,
                            sourceMap: true
                        }
                    },
                    {
                        loader: "sass-loader"
                    }
                ]
            },
            {
                test: /\.(js|jsx)$/,
                exclude: /node_modules/,
                loader: ["babel-loader", "eslint-loader"]
            },
            {
                test: /\.(jpe?g|png|gif)$/i,
                loader: "file-loader"
            },
            {
                test: /\.(woff|ttf|otf|eot|woff2|svg)$/i,
                loader: "file-loader"
            }
        ]

您可以查看here中的代码

关于javascript - Webpack 不会编译带有背景图像的 SASS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59447844/

相关文章:

bash - 全局安装的 NPM 包(带 CLI)返回命令未找到

javascript - 渐变到圆圈

php - 从一个选项卡导航到另一个选项卡

node.js - node.js 中的 Mongodb 安全性

node.js - Sequelize : join three tables

javascript - 使用 CDN 与 NPM 安装库

node.js - 尝试在 Windows 上使用 npm 安装 yo

JavaScript 的类 : toString() method

javascript - 在 Node 中使用 firebase 时出现错误 "Cannot read property ' uid' of null”?

javascript - 如何为每个端点和 REST 方法设置不同的 Passport JS Bearer 策略?