javascript - ReactJS + Webpack : Why Uncaught Error: Cannot find module "../media/interiorTest.jpg"?

标签 javascript html webpack reactjs

我有一个使用 ReactJS 运行的 Webpack,我尝试抓取图像并显示它,但收到错误:未捕获错误:找不到模块“../media/interiorTest.jpg”

这是我尝试过的:

  <div>
    <img src={require("../media/interiorTest.jpg")}/>
  </div>

目录树是(我正在尝试从 home-page.js 获取 interiorTest.jpg):

enter image description here

我的webpack.config.js是:

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

const config = {
  context: __dirname,
  entry: './src/index.js',
  output: {
    path: __dirname,
    filename: 'bundle.js'
  },
  module: {
    loaders: [
      {
        exclude: /node_modules/,
        test: /\.(js|jsx)$/,
        loader: 'babel'
      },
      {
        test: /\.scss$/,
        loader: ExtractTextPlugin.extract('css!sass')
      }
    ]
  },
  devServer: {
    historyApiFallback: true,
    contentBase: './'
  },
  plugins: [
    new webpack.DefinePlugin({ 'process.env':{ 'NODE_ENV': JSON.stringify('production') } }),
    new webpack.optimize.DedupePlugin(),
    new webpack.optimize.OccurenceOrderPlugin(),
    new webpack.HotModuleReplacementPlugin(),
    new webpack.optimize.UglifyJsPlugin({
      compress: { warnings: false },
      output: {comments: false },
      mangle: false,
      sourcemap: false,
      minimize: true,
      mangle: { except: ['$super', '$', 'exports', 'require', '$q', '$ocLazyLoad'] }
    }),
    new ExtractTextPlugin('src/public/stylesheets/app.css', {
      allChunks: true
    })
  ]
};

module.exports = config;

最佳答案

通过查看 webpack.config.js 中的代码和您包含的屏幕截图,您的目录结构如下所示

app/
    src/
         actions/
         components/
         ...
         public/

webpack.config.js中你有这个代码

  devServer: {
    historyApiFallback: true,
    contentBase: './'
  },

contentBase 属性定义了服务器运行时将加载文件的目录,并且由于您已将其设置为 './',因此它表示文件/data 将从 app 目录加载。

这就是从 public 目录链接文件的原因,您还必须在路径中包含 /src/public ,例如 src="/src/public/folder/where/image/is- located/image.jpg"

在这种情况下

  <div>
    <img src="/src/public/media/interiorTest.jpg" alt="" />
  </div>

注意

  • 通常代码分为两个文件夹,src 用于存储您正在处理的代码,public 用于 webpack 存储编译后的代码,静态 Assets 。我们只需将 /public 设置为 contentBase

    值得您花时间研究一下 React 和 JavaScript 应用程序的目录结构

  • 图像最好有alt="",只需输入最能描述图像的替代文本即可。

关于javascript - ReactJS + Webpack : Why Uncaught Error: Cannot find module "../media/interiorTest.jpg"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39418891/

相关文章:

javascript - 修改 Google Maps Api 以显示基于国家/城市名称而不是 LatLng 的标记

javascript - 从服务获取 ng-patten 作为变量

html - grails链接在Internet Explorer中不起作用

javascript - 使用 if 语句的表单验证不起作用

typescript - 有没有办法将webpack捆绑的js文件转换成源代码ts?

javascript - 视频 .mp4 不会在任何浏览器中显示

Javascript Image 对象无需实例化

javascript - 使用保存的索引复制 HTML 文本

node.js - React router 版本 4 没有显示任何内容

webpack - 与 Webpack 捆绑时出现 "define cannot be used indirect"错误