【发布时间】:2018-09-18 10:11:17
【问题描述】:
我遇到了烦人的问题,当我在开发环境中运行我的 react 应用程序时一切正常,但是当我尝试构建到生产环境时,所有链接都是错误的。
假设这棵树:
-
主目录
- 公开/
- svg/
- some_img.svg
- svg/
- 源/
- 组件/
- some_component.jsx
- App.js
- index.js
- 组件/
- 公开/
现在在some_component.jsx 我以这种方式引用 svg 文件:
src="/public/svg/some_img.svg"
然而,在构建到生产环境之后,这个路径没有改变,因此无法再访问文件,因为我需要将它更改为:
src="svg/some_img.svg"
我在 webpack 配置文件中玩,我想可能是通过设置:
publicPath: "/"
到:
publicPath: "/public/"
会解决问题,但它唯一做的就是在应用程序启动期间出错:
CANNOT GET/
我的 webpack 配置:
const HtmlWebPackPlugin = require("html-webpack-plugin");
const htmlPlugin = new HtmlWebPackPlugin({
template: "./public/index.html",
filename: "./index.html"
});
module.exports = {
output: {
filename: "main.[hash:8].js",
publicPath: "/"
},
module: {
rules: [
{
test: /\.jsx$/,
exclude: /node_modules/,
loader: "babel-loader?presets[]=react"
},
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: "babel-loader"
}
},
{
test: /\.(sass|scss)$/,
use: ["style-loader", "css-loader", "sass-loader", "postcss-loader"]
},
{
test: /\.svg$/,
loader: "svg-sprite-loader"
}
]
},
plugins: [htmlPlugin],
devServer: {
historyApiFallback: {
rewrites: [{ from: /^\/$/, to: "/index.html" }]
}
},
resolve: {
extensions: [".js", ".jsx", ".json"]
}
};
如何解决这个问题,以便统一开发和生产路径?
【问题讨论】:
标签: javascript node.js reactjs webpack