У меня возникла досадная проблема, когда я запускаю свое реагирующее приложение в среде разработки, все работает нормально, но когда я пытаюсь перейти к производству, все ссылки неверны.
предположим, что это дерево:
main_directory
- общественности /
- SRC /
- компоненты /
- 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/
мой конфиг веб-пакета:
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"]
}
};
Как можно решить эту проблему, чтобы унифицированные пути разработки и производства?