Webpack - url-loader无法解析jpg

4

在我的项目根目录下有两个文件夹 - build 和 src。我想把 src 文件夹中的图片移动到 build 文件夹。但是,尽管我已经包含了url-loader插件,仍然出现“无法解析文件”的错误。

header.jsx

import {React, ReactDOM} from '../../build/react';

export default class Header extends React.Component {

  render() {
    return (
        <div className="header">
        <img className="logo" src={require("../src/content/images/program-brand-logo.jpg")} />
        </div>
      );
    }
  };

错误日志:

ERROR in ./src/components/header.jsx
Module not found: Error: Cannot resolve 'file' or 'directory' ../src/content/images/program-brand-logo.jpg in /Users/username/Desktop/Projects/Demo/Scorecard/SPA/React (Working Copy)/src/components
 @ ./src/components/header.jsx 45:68-123

Webpack.config.js

var webpack = require('webpack');
var path = require('path');
require("babel-polyfill");

var BUILD_DIR = path.resolve(__dirname, 'build');
var APP_DIR = path.resolve(__dirname, 'src');

module.exports = {
  entry: [
    // Set up an ES6-ish environment
    'babel-polyfill',
    'bootstrap-loader',
    'webpack/hot/dev-server',
    APP_DIR + '/import.js',
  ],
  output: {
    path: BUILD_DIR,
    filename: 'bundle.js'
  },
  module: {
    loaders: [{
      test: /\.jsx?$/,
      loader: 'babel',

      exclude: /node_modules/,
      query: {
        plugins: ['transform-runtime'],
        presets: ['es2015', 'stage-0', 'react']
      }
    }, {
      test: /\.css$/,
      loader: "style-loader!css-loader"
    }, {
      test: /\.scss$/,
      loaders: ["style", "css", "sass"]
    }, {
      test: /\.(png|woff|woff2|eot|ttf|svg|jpg|gif)$/,
      loader: 'url-loader?limit=100000'
    }]
  },
  plugins: [
    new webpack.ProvidePlugin({
      $: "jquery",
      jQuery: "jquery"
    }),
    new webpack.HotModuleReplacementPlugin()
  ]
};

你尝试使用file-loader代替url-loader了吗?limit=100000 - Aaleks
3个回答

4

你不必使用 require 加载图像,你可以像导入其他依赖项一样使用 import 导入它们。

import img from './../src/content/images/program-brand-logo.jpg'

.....

<img className="logo" src={img} />

我认为你应该按照以下方式指定路径:'./../src/content/images/program-brand-logo.jpg'

。这与IT技术有关,涉及路径设置。请注意保留HTML标记。

仍然收到相同的错误信息:ERROR in ./src/components/header.jsx Module not found: Error: Cannot resolve 'file' or 'directory' ./../src/content/images/program-brand-logo.jpg in /Users/username/Desktop/Projects/Demo/Scorecard/SPA/React (Working Copy)/src/components @ ./src/components/header.jsx 29:24-81 - Rahul Dagli

0
请确保路径 ../src/content/images/program-brand-logo.jpg 是相对于 header.jsx 文件的。

0

只需删除

?limit=100000 from 
test: /\.(png|woff|woff2|eot|ttf|svg|jpg|gif)$/,
      loader: 'url-loader?limit=100000'

并构建webpack,你的最终测试加载器应该像这样:

test: /\.(png|woff|woff2|eot|ttf|svg|jpg|gif)$/,
      loader: 'url-loader'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接