У меня два приложения. Одно из них - приложение Angular, которое служит моим основным пользовательским интерфейсом. Другой - приложение React. Мне нужно прокси-запросы от приложения Angular к приложению React.
Приложение Angular содержит эту конфигурацию proxy.conf. json:
"/parts": {
"target": "https://my-application-url.my-domain.com/",
"secure": true,
"logLevel": "info",
"changeOrigin: true,
"pathRewrite": {
"^/parts": ""
}
}
проксирование на приложение React работает нормально - прокси-сервер перенаправляет при обнаружении пути /parts
и некоторые части приложения React загружаются правильно.
Проблема в том, что приложение React по этому URL-адресу обнаруживает 404 ошибки при попытке загрузки JS файлов приложений. На вкладке «Сеть» в консоли разработчика я вижу эти ошибки:
Request URL: https://my-application-url.my-domain.com/js/app.bundle.js
Status Code: 404 Not Found
и
Request URL: https://my-application-url.my-domain.com/js/vendor.bundle.js
Status Code: 404 Not Found
Я считаю, что эти ошибки вызваны ошибками в моей конфигурации Webpack для приложения React, но я не могу понять, каково решение.
Это файл конфигурации Webpack для приложения React:
const path = require('path');
const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const URL = process.env.URL || '/parts';
const config = {
resolve: {
extensions: ['.js', '.jsx', '.json', '.ts', '.tsx'],
},
module: {
rules: [
{
test: /\.s[ac]ss$/i,
use: [
'style-loader',
'css-loader',
'sass-loader',
],
},
{
test: /\.(ts|js)x?$/,
exclude: /node_modules/,
use: [
{
loader: 'babel-loader',
},
],
},
{
test: /\.(png|svg|jpg)$/,
loader: 'file-loader',
},
{
enforce: 'pre',
test: /\.js$/,
loader: 'source-map-loader'
],
},
entry: {
app: ['./src/app/index.tsx'],
vendor: ['react', 'react-dom'],
},
target: 'web',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'js/[name].bundle.js',
publicPath: "/",
},
plugins: [],
};
module.exports = (envr) => {
const envName = envr || process.env.ENV_NAME;
const isDev = (envName === 'DEV');
if(isDev) {
config.devtool = 'source-map';
config.mode = 'development';
config.plugins = [
new webpack.DefinePlugin({
APPLICATION: {
ENVIRONMENT: JSON.stringify(URL),
},
ROOT_PATH: JSON.stringify(URL),
GATEWAY_PATH: JSON.stringify(process.env.GATEWAY_PATH),
NODE_ENV: JSON.stringify(process.env.NODE_ENV),
}),
];
config.devServer = {
contentBase: path.resolve(__dirname, 'dist'),
compress: true,
inline: true,
hot: true,
disableHostCheck: true,
allowedHosts:
'localhost.my-domain.com',
],
port: 8080,
};
} else {
config.mode = 'production';
}
config.plugins = [...config.plugins,
new HtmlWebpackPlugin({
template: path.resolve(__dirname, 'src', 'app', 'index.html'),
title: 'React App',
}),
];
return config;
};
Приложение React запускается на моем локальном компьютере с помощью этой команды: npx webpack-dev-server --env DEV
После многих попыток я не могу определить, как разрешить файл js/app.bundle.js
. Как настроить Webpack так, чтобы этот файл успешно загружался после проксирования?