我遇到了恼人的问题,当我在开发环境中运行我的react应用程序时,一切正常,但是当我试图构建到生产中时,所有的链接都是错误的。
假设这棵树:
- public/
- svg/
- some\_img.svg
- src/
- components/
- 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"]
}
};如何解决这个问题,对于开发和生产路径都是统一的?
发布于 2018-09-19 12:48:25
这是指定路径所需的问题配置的解决方案:
module: {
...
rules: [
{
test: /\.(png|jpg|gif|svg|ico)$/,
loader: 'file-loader',
query:{
outputPath: './img/',
name: '[name].[ext]?[hash]'
}
}
...
]
}发布于 2018-09-18 10:50:45
如何导入svg,然后引用导入的变量:
import someImg from "../../public/svg/some_img.svg"
src={someImg}https://stackoverflow.com/questions/52384188
复制相似问题