webpack打包的时候img标签中的src找不到?

发布于 2022-09-04 04:46:13 字数 2746 浏览 25 评论 0

我写的路径应该没问题的:
图片描述
运行后报错:
图片描述
webpack配置:

let webpack = require('webpack'),
  path = require('path'),
  HtmlWebpackPlugin = require('html-webpack-plugin'),
  ExtractTextPlugin = require('extract-text-webpack-plugin'),
  hotMiddlewareScript = 'webpack-hot-middleware/client?reload=true',
  utils = require('./utils')

var env = process.env.NODE_ENV,
  cssSourceMapDev = (env === 'development' && config.dev.cssSourceMap),
  cssSourceMapProd = (env === 'production' && config.build.productionSourceMap),
  useCssSourceMap = cssSourceMapDev || cssSourceMapProd;

module.exports = {
  devtool: 'eval-source-map', //配置生成Source Maps,选择合适的选项

  entry: {
    desktop: [path.resolve(__dirname, '../src/main.js'), hotMiddlewareScript],
  },
  output: {
    path: path.resolve(__dirname, '../dist'), //打包后的文件存放的地方
    publicPath: '/',
    filename: '[name].js'
  },

  resolve: {
    extensions: ['', '.js'],
    fallback: [path.join(__dirname, '../node_modules')],
    alias: {
      'src': path.resolve(__dirname, '../src'),
      'assets': path.resolve(__dirname, '../src/assets'),
      'scss': path.resolve(__dirname, '../src/scss')
    }
  },

  module: { //在配置文件里添加JSON loader
    loaders: [{
      test: /\.json$/,
      loader: "json"
    }, {
      test: /\.js$/,
      exclude: /node_modules/,
      loader: 'babel'
    }, {
      test: /\.css$/,
      loader: 'style!css!postcss' //添加对样式表的处理
    }, {
      test: /\.scss$/,
      loader: 'style!css!sass?sourceMap'
    }, {
      test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
      loader: 'url?limit=10000&name=images/[name].[ext]'
    }, {
      test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
      loader: 'url?limit=10000&name=images/[name].[ext]'
    }]
  },

  sassLoader: {
    includePaths: [path.resolve(__dirname, "./some-folder")]
  },
  
  postcss: [
    require('autoprefixer') //调用autoprefixer插件
  ],

  plugins: [
    new webpack.BannerPlugin("Copyright B1anker."), //在这个数组中new一个就可以了
    new webpack.HotModuleReplacementPlugin(),
    new HtmlWebpackPlugin({
      //渲染输出html文件名,路径相对于 output.path 的值
      filename: './index.html',
      //渲染源模版文件
      template: path.resolve(__dirname, '../src/views/index.html'),
      //这个东西非常重要,true: 自动写入依赖文件; false: 不写入依赖,构建多页面非常有用
      inject: true
    })
  ],

  devServer: {
    contentBase: "./dist", //本地服务器所加载的页面所在的目录
    colors: true, //终端中输出结果为彩色
    historyApiFallback: true, //不跳转
    inline: true //实时刷新
  }
}

如何处理呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

也只是曾经 2022-09-11 04:46:13

不要用这个html-withimg-loader了,我看网上都说用这个插件,不知道谁给误导的,官方的html-loader就能实现啊!!!

html-loader

{
    test: /\.html$/,
    use: {
        loader: 'html-loader'
    }
}

具体可以看我的另一个问题https://segmentfault.com/q/1010000012510021

你怎么敢 2022-09-11 04:46:13

在html文件里面这样引用图片即可

<img src="${ require('..assets/logo.png') }">

@抓不住的月光 使用html-withimg-loader之后html-webpack-plugin在html不能使用注入语法了

夜血缘 2022-09-11 04:46:13

html-withimg-loader

 new HtmlWebpackPlugin({
        template: 'html-withimg-loader!' + path.resolve(srcDir, filename),
        filename: filename
    }),

https://github.com/wzsxyz/htm...

野侃 2022-09-11 04:46:13

从运行后报错的情况来看, 你应该正在用webpack-dev-server进行开发调试, 这个时候webpack.config.jsdevServer.contentBase指定了web服务器的根目录. 该配置现在为/<project>/dist/, 而图片的请求地址为/assets/logo.png, 这个时候图片对应的本地文件系统路径应该为/<project>/dist/assets/logo.png.

你可以把assets/复制到dist/目录下, 这样应该就能解决问题了.

行至春深 2022-09-11 04:46:13

试试看在html css中的引入路径使用tilde symbol ‘~’开头,会把需要的文件当module模块引入,然后用相对路径或者config 配置别名到绝对路径,使用别名的路径加载。
{{{

// webpack.config.js
resolve: {
    alias: {
          'src': resolve('src'),
          'assets': resolve('src/assets')
    }
}

<!-- html -->
<img src="~assets/title.jpg">

/* css */
body {
    background-color: #fff;
}
@import '~src/styles/base.less';

}}}

温柔女人霸气范 2022-09-11 04:46:13

重新开启一次服务应该就好使了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文