javascript Webpack Sass -无法解析图像

uyhoqukh  于 2023-04-28  发布在  Java
关注(0)|答案(6)|浏览(158)

我正在尝试通过webpack编译我的Sass。编译正常的sass是好的,但我得到了一个错误。

Module not found: Error: Can't resolve '../img/twitter.svg' in '/Users/Steve/mywebsite/scss'
     @ ./~/css-loader!./~/sass-loader/lib/loader.js!./scss/main.scss 6:94501-94530

有没有办法解决这个问题?或者,有没有一种方法可以将sass编译器的级别设置得不那么严格,从而忽略某些错误
下面是我目前的配置。

const path = require("path");
const ExtractTextPlugin = require("extract-text-webpack-plugin");

module.exports = {
  resolve: {
    alias: {
      masonry: "masonry-layout",
      isotope: "isotope-layout",
    },
  },

  entry: "./main.js",
  output: {
    path: path.resolve(__dirname, "./dist/dist2"),
    filename: "bundle.js",
  },

  module: {
    rules: [
      {
        test: /\.(png|jpg|svg)$/,
        include: path.join(__dirname, "/dist/img"),
        loader: "url-loader?limit=30000&name=images/[name].[ext]",
      },
      {
        test: /\.js$/,
        exclude: /node_modules/,
        loader: "babel-loader?presets[]=es2015",
      },

      {
        test: /\.scss$/,
        use: ExtractTextPlugin.extract({
          use: ["css-loader", "sass-loader"],
        }),
      },

      {
        test: /\.vue$/,
        loader: "vue-loader",
        options: {
          loaders: {},
          // other vue-loader options go here
        },
      },
    ],
  },

  plugins: [
    // new webpack.optimize.UglifyJsPlugin(),
    new ExtractTextPlugin("ross.css"),
  ],
};
uurity8g

uurity8g1#

我知道这是晚了,但对于任何人寻找一个变通办法这个错误;在我的例子中,图像在模板中加载得很好,然而,Webpack返回了一个错误:Module not found: Error: Can't resolve './path/to/assets.png'

修复/解决方法:

?url=false添加到css-loader中,这将禁用css-loader的URL处理:

...
{
  loader: "css-loader?url=false"
},
...
oxcyiej7

oxcyiej72#

我没有任何运气与url-loaderfile-loader建议在另一个答案。我可以用resolve-url-loader解决它

module: {
  rules: [
    { // sass / scss loader for webpack
      test: /\.(sass|scss|svg|png|jpe?g)$/, //Make sure to allow all necessary file types here
      use: ExtractTextPlugin.extract({
        use: [
            {
              loader: 'css-loader',
              options: {
                importLoaders: 1,
                minimize: true,
                sourceMap: true
              }
            },
            {
              loader: 'postcss-loader',
              options: {
                sourceMap: true
              }
            },
            {
              loader: "resolve-url-loader", //resolve-url-loader needs to come *BEFORE* sass-loader
              options: {
                sourceMap: true
              }
            },
            {
              loader: "sass-loader",
              options: {
                sourceMap: true
              }
            }
        ]
      })
    }
  ],
},
kuarbcqp

kuarbcqp3#

这是css-loader 4中的一个突破性变化。x(根据css-loader issue 1136)。

ukqbszuj

ukqbszuj4#

您尚未为webpack文件中的图像指定任何加载器。
1.将url-loaderfile-loader安装到您的包中。json
经由

npm install --save url-loader file-loader

1.在webpack配置文件中添加以下内容-

{
        test    : /\.(png|jpg|svg)$/,
        include : path.join(__dirname, 'img'),
        loader  : 'url-loader?limit=30000&name=images/[name].[ext]'
    }, // inline base64 URLs for <=30k images, direct URLs for the rest
yk9xbfzb

yk9xbfzb5#

我使用这个“Disable url resolving using the /* webpackIgnore:true */ comment”
www.example. com

fcwjkofz

fcwjkofz6#

2023 - webpack(5.81.0)

我得到了同样的错误,使用webpack(5.81.0)与CSS。在尝试了以上所有的答案都没有成功之后,我研究了一点,对这个问题有了更好的理解。
这个错误通常发生在你使用css文件中的图片时,比如background-image:url(path/to/image)
在我的例子中,我使用的是tailwind的bg-[url(path/to/image.jpg)]类,但是url相对于构建过程中的加载位置是错误的。
所以,最好的思考方式是:在构建过程中将在何处使用映像?相应地改变图像URL。

相关问题