通过webpack处理后图像不显示

oxiaedzo  于 2023-10-19  发布在  Webpack
关注(0)|答案(2)|浏览(164)

我开始在我的React应用程序中使用webpack捆绑图像,但它们不会显示在浏览器中(有一个<img/>标记,但没有图像)。如果我运行“webpack”,图像会出现在公共文件夹中的散列名称中,如果我运行“webpack-dev-server”,它也会显示图像被捆绑,但浏览器中仍然没有任何内容。这是我的webpack配置文件:

module.exports = (env) => {
const isProduction = env === 'production';
const CSSExtract = new ExtractTextPlugin('styles.css');

return {
    entry: ['babel-polyfill', './src/app.js'],
    output: {
        path: path.resolve(__dirname, './public/scripts'),
        filename: 'bundle.js'
    },
    module: {
            rules: [{
                 loader: 'babel-loader',
                 test: /\.js$/,
                 exclude: /node_modules/
            },
            {
                test: /\.(png|jp(e*)g|svg)$/,
                use: [{
                    loader: 'url-loader',
                    options: {
                        limit: 8000, // Convert images < 8kb to base64 strings
                        name: 'images/[hash]-[name].[ext]'
                    }
                }]
            },
            {
            test: /\.s?css$/,
            use: CSSExtract.extract({
                use : [
                    {
                        loader : 'css-loader',
                        options : {
                            sourceMap : true // source map for css in development
                        }
                    },
                    {
                        loader : 'sass-loader',
                        options : {
                            sourceMap : true
                        }
                    },
                    {
                        loader: "jshint-loader"
                    }
                ]
            })

        },
        ]
    },
    plugins : [
        CSSExtract,
    ],
    devtool: isProduction ? 'source-map' : 'cheap-eval-source-map', // source map for locating a bug in source files, not in the bundle
    devServer: {
        contentBase: path.join(__dirname, "public"),
        publicPath: "/scripts/",
        historyApiFallback: true // this line is for client-side routing
    },
}

}
这就是我如何将图像添加到应用程序中:

import img1 from '../../assets/img/ticket.jpg';

这就是我在render()方法中使用它的方法。

<img src={img1}/>

我在浏览器devtools中看到了这一点,但图像本身并不显示:

<img src="images/9011429377e91d003e5b64251ac3b9a8-ticket.jpg">

如何修复它并显示图像?

qij5mzcb

qij5mzcb1#

嗨,我不知道这是否有帮助。当我导入图像时,我做了一些不同的事情,使用图像的名称而不是使用生成的数字。
在我写的申请书里。

import '../../assets/img/ticket.jpg';

然后在render方法中我把。

// notice the slash as the front of the "src"
 <img src="/assets/ticket.jpg">

在我的webpack中,我有这样的:

{
    test: /\.(png|jpg|gif|json|xml|ico|svg)$/,
    use: [
      {
        loader: 'file-loader',
        options: {
          name: '[name].[ext]',
          outputPath: 'assets/',
          publicPath: '/'
        }
      }
    ]
  }
cidc1ykv

cidc1ykv2#

虽然这可能是过时的问题,但我相信你看不到图像的原因是浏览器无法检索该图像的src URL。它可以通过打开新标签并尝试检索该URL进行测试。Devserv配置为仅检索脚本。输出也缺少publicPath定义(可能是“/”)没有提到index.html和什么插件是用来产生它或什么版本的Webpack你有,但如果它是手动添加脚本标记指向java.js然后你可以直接到src= scripts/java.js在脚本标记,devserv. java. jickPath ="/",输出. java. jickPath ="/”

相关问题