【问题标题】:webpack - not able to resolve image src pathwebpack - 无法解析图像 src 路径
【发布时间】:2022-01-03 12:22:41
【问题描述】:

这是我的项目目录:

src
 -components
   -Header
     -index.jsx
webpack
 -webpack.base.js
 -webpack.dev.js

在我的App.jsx

return (
  <img src="@/assets/images/components/header/logo-header.png" alt="logo" class="header__icon"/>
)

我运行npm start后,图像没有显示。

来自检查员

package.json

  "scripts": {
    "start": "webpack-dev-server --config ./webpack/webpack.dev.js"
  },

utils.js

const path = require('path')

module.exports = {
  resolve: function(dir) {
    return path.join(__dirname, '..', dir)
  }
}

webpack.base.js

const webpack = require("webpack");

const utils = require('./utils')

const HtmlWebpackPlugin = require("html-webpack-plugin");

module.exports = {
  entry: "./src/index.jsx",
  resolve: {
    alias: {
      '@': utils.resolve('src'),
    },
    extensions: ["*", ".js", ".jsx"]
  },
  module: {
    rules: [...],
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: "public/index.html",
      filename: "index.html"
    })
  ],
};

webpack.dev.js

const { merge } = require("webpack-merge");
const base = require("./webpack.base");

const Dotenv = require("dotenv-webpack");

module.exports = merge(base, {
  mode: "development",
  devtool: "inline-source-map",
  output: {
    path: '/',
  },
  devServer: {
    port: 3000,
    static: true
  }
});

我尝试在 webpack 中添加 file-loader 但仍然无法正常工作。

      {
        test: /\.(png|jpe?g|gif)$/i,
        use: [
          {
            loader: 'file-loader',
          },
        ],
      },

【问题讨论】:

    标签: javascript reactjs webpack webpack-dev-server


    【解决方案1】:

    您可以使用Asset Management#Loading Images。您可以根据自己的文件目录结构调整文件路径。

    例如

    目录结构:

    ⚡  tree -L 4 -I 'node_modules'
    .
    ├── package-lock.json
    ├── package.json
    ├── src
    │   ├── assets
    │   │   └── images
    │   │       └── logo.png
    │   ├── index.html
    │   └── index.jsx
    └── webpack.config.js
    
    3 directories, 6 files
    

    src/index.jsx:

    import React from "react";
    import ReactDOM from "react-dom";
    
    function App() {
      return (
        <div>
          <img src={require("@/assets/images/logo.png")} alt="logo" />
        </div>
      );
    }
    
    ReactDOM.render(<App />, document.getElementById("app"));
    

    webpack.config.js:

    const path = require("path");
    const HtmlWebpackPlugin = require("html-webpack-plugin");
    
    module.exports = {
      entry: "./src/index.jsx",
      output: {
        path: path.resolve(__dirname, "./dist"),
      },
      mode: "development",
      resolve: {
        alias: {
          "@": path.resolve(__dirname, "./src"),
        },
        extensions: ["*", ".js", ".jsx"],
      },
      module: {
        rules: [
          {
            test: /\.(jsx|js)$/,
            exclude: /node_modules/,
            use: {
              loader: "babel-loader",
              options: {
                presets: ["@babel/preset-env", "@babel/preset-react"],
              },
            },
          },
          {
            test: /\.(png|svg|jpg|jpeg|gif)$/i,
            type: "asset/resource",
          },
        ],
      },
      plugins: [
        new HtmlWebpackPlugin({
          template: path.resolve(__dirname, "./src/index.html"),
        }),
      ],
      devServer: {
        static: {
          directory: path.join(__dirname, "dist"),
        },
        port: 9000,
      },
    };
    

    package.json:

    {
      "name": "70107481",
      "scripts": {
        "build": "webpack",
        "start": "webpack serve"
      },
      "devDependencies": {
        "@babel/core": "^7.16.0",
        "@babel/preset-env": "^7.16.4",
        "@babel/preset-react": "^7.16.0",
        "babel-loader": "^8.2.3",
        "html-webpack-plugin": "^5.5.0",
        "webpack": "^5.64.3",
        "webpack-cli": "^4.9.1",
        "webpack-dev-server": "^4.5.0"
      },
      "dependencies": {
        "react": "^17.0.2",
        "react-dom": "^17.0.2"
      }
    }
    

    通过npm start 启动 webpack 开发服务器。结果:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-15
      • 2017-07-24
      • 1970-01-01
      • 2017-07-23
      • 1970-01-01
      • 2022-12-19
      • 1970-01-01
      • 2020-08-05
      相关资源
      最近更新 更多