【发布时间】:2020-04-13 05:04:36
【问题描述】:
我构建了一个使用 webpack 和 babel 的简单 React 应用程序。我在加载图像时遇到问题。我的基本文件夹结构:
root:
webpack.config.js
package.json
public:
index.html
src:
800x600-1x2x.jpg
App.css
App.js
index.js
App.js 是样板代码:
import React, { Component} from "react";
import {hot} from "react-hot-loader";
import "./App.css";
class App extends Component{
render(){
return(
<div className="App">
<h1> Hello, World!! </h1>
</div>
);
}
}
export default hot(module)(App);
App.css 是我将图像加载到背景中的位置:
.App {
margin: 1rem;
font-family: Arial, Helvetica, sans-serif;
background-image: url("./800x600-1x2x.jpg");
border: 1px solid red;
}
webpack.config.js:我尝试使用 url-loader 而不是文件加载器,但不起作用
const path = require("path");
const webpack = require("webpack");
module.exports = {
entry: "./src/index.js",
mode: "development",
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: /(node_modules|bower_components)/,
loader: "babel-loader",
options: { presets: ["@babel/env"] }
},
{
test: /\.css$/,
use: ["style-loader", "css-loader"]
},
{
test: /\.(png|jpe?g|gif)$/i,
use: "file-loader"
}
]
},
resolve: { extensions: ["*", ".js", ".jsx"] },
output: {
path: path.resolve(__dirname, "dist/"),
publicPath: "/dist/",
filename: "bundle.js"
},
devServer: {
contentBase: path.join(__dirname, "public/"),
port: 3000,
publicPath: "http://localhost:3000/dist/",
hotOnly: true
},
plugins: [new webpack.HotModuleReplacementPlugin()]
};
如果我点击 800x600-1x2x.jpg 我可以看到 webpack:// 正在对图像进行处理,我可以通过 chrome 源代码查看此代码:
__webpack_require__.r(__webpack_exports__);
/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "0e5cf6190f4b1586fb587bc9e9577981.jpg");
选择 App 元素并查看我看到的 css 规则:
background-image: url([object Module]);
我尝试过但没有成功的事情:
将图像放在没有做任何事情的公用文件夹中。
创建一个 dist 文件夹并将图像放入该文件夹中。
安装了 html-loader 并包含在 webpack 中:
{
test: /\.html$/,
loader: 'html-loader'
},
安装了resolve-url-loader并将其包含在webpack中:
{
test: /\.css$/,
loader: ["style-loader", "css-loader", "resolve-url-loader"]
},
其他信息:
我也没有构建 webpack 在运行时编译的 bundle.js。
我正在使用它来运行我的 webpack:webpack-dev-server --mode development
我查看了其他 stackoverflow 答案,但没有发现任何对我有用的东西。我错过了什么?
【问题讨论】:
标签: javascript css reactjs webpack