javascript - Webpack 输出图像的错误路径

标签 javascript image reactjs webpack

我正在使用 React 和 Webpack 构建一个网站。当我使用 webpack 构建应用程序并尝试包含图像时,图像会与其他 Assets 一起写入构建文件夹,但 webpack 输出的图像链接不正确。我可以进入构建文件夹并查看图像,因此它被正确复制,但链接是错误的。

我的 react 组件如下所示:

'use strict';

var React = require('react');
var newsFeedIcon = require('../../img/news-feed-icon.png');

//create story component
module.exports = React.createClass({
  render: function () {
    return (
        <div className="col_12 footer-right mobile-foot">
        <img src={newsFeedIcon} />
        <p><a href="/about">About Us</a> | <a href="/contact">Contact Us</a> | <a href="/faq">FAQ</a> | <a href="/media">Media</a> | <a href="#">Privacy Statement</a> | <a href="#">Terms of Service</a></p>
      </div>
      );
  }
})

我的 Webpack 配置如下所示:

    webpack: {
      client: {
        entry: __dirname + '/app/js/client.jsx',
        output: {
          path: 'build/',
          file: 'bundle.js'
        },
        module: {
          loaders: [
          {
            test: /\.jsx$/,
            loader:'jsx-loader'
          },
          {
            test: /\.css$/,
            loader: "style-loader!css-loader"
          },
          {
            test: /\.(eot|woff|woff2|ttf|svg|png|jpg)$/,
            loader: 'url-loader?limit=30000&name=[name]-[hash].[ext]'
          },         
          { 
            test: /\.jpe?g$|\.gif$|\.png$/i, 
            loader: 'file-loader' 
          },
          {
            test: /\.jpg/,
            loader: 'file'
          }]
        }
      },
      test: {
        entry: __dirname + '/test/client/test.js',
        output: {
          path: 'test/client/',
          file: 'bundle.js'
        },
        module: {
          loaders: [
          {
            test: /\.jsx$/,
            loader:'jsx-loader'
          }] 
        }
      },
      karma_test: {
        entry: __dirname + '/test/karma_tests/test_entry.js',
        output: {
          path: 'test/karma_tests/',
          file: 'bundle.js'
        },
        module: {
          loaders: [
          {
            test: /\.jsx$/,
            loader:'jsx-loader'
          }]
        },
        background: true
      }
    },

从昨天起我就一直在用头撞墙,所以任何帮助将不胜感激。让我知道您需要更多信息。

谢谢!

最佳答案

您可以尝试设置文件加载器的name选项以及output.publicPath

 output: {
     path: 'build/',
     file: 'bundle.js',
     publicPath: '/assets'
}

...

{ 
     test: /\.(png|jpg)$/, 
     loader: 'file-loader?name=/img/[name].[ext]' 
}

那么您的要求中解析的网址将是:

/assets/img/news-feed-icon.png

关于javascript - Webpack 输出图像的错误路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33243399/

相关文章:

javascript - 有没有办法在运行时从源代码中隐藏一个div

javascript - 为数组项添加 onclick 事件

javascript - Vuejs Hello World 不会渲染

javascript - 扩展 SVGTextElement 时 typescript 未捕获类型错误

javascript - Angularjs Summernote : $scope. editor.insertImage 不是函数

image - opencv 在另一个图像上查找图像坐标

linux - GNU BASH 命令更改图像大小和 DPI?

reactjs - react 引导错误 : 'AccordionCollapseProps' is not exported from './AccordionCollapse'

javascript - 当组件聚焦/散焦时启用/禁用按键监听器

javascript - 如何获取对象数组内属性的最小值?