Я следовал настройке веб-пакета от https://createapp.dev/, а затем перевел свои источники из create-реакции-приложения в веб-пакет. Но у меня есть проблема для горячего перезаписи. Браузер не может принимать любые пути маршрутизатора, за исключением случаев, когда я редактировал страницы, за исключением /.
Когда я запускаю devpackver webpack с помощью 'запуска пряжи', горячая перезагрузка хороша для '/', например: http://localhost:4000. но не удается найти другие пути, например "/ main", "/ login" и т. Д. ... Сообщение об ошибке, например, когда я пытался обновить / main, затем я получил 'Cannot GET / main'. Я попытался найти некоторые ресурсы, такие как добавление «inline: true» в настройках веб-пакета, а также добавил hot.
Я также нахожу статью других людей, но они показывают / загружают горячую перезагрузку только в отличие от горячей перезагрузки других компонентов страницы. .
Я также ссылался на этот сайт. https://github.com/gaearon/react-hot-loader/issues/1150
// webpack.config.js
const webpack = require('webpack');
const path = require('path');
const LodashModuleReplacementPlugin = require('lodash-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const config = {
entry: [ 'react-hot-loader/patch', 'react-hot-loader/babel', './src/index.tsx' ],
output: {
publicPath: './dist',
path: path.resolve(__dirname, 'dist'),
filename: '[id].bundle.js',
chunkFilename: '[id].js' // will auto assign a id to your separate chunks
},
module: {
rules: [
{
test: /\.(js|jsx)$/,
use: 'babel-loader',
exclude: /node_modules/
},
{
test: /\.css$/,
use: [ 'style-loader', 'css-loader' ],
exclude: /\.module\.css$/
},
{
test: /\.ts(x)?$/,
use: [ 'awesome-typescript-loader' ],
exclude: /node_modules/
},
{
test: /\.css$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
importLoaders: 1,
modules: true
}
}
],
include: /\.module\.css$/
},
{
test: /\.svg$/,
use: 'file-loader'
},
{
test: /\.png$/,
use: [
{
loader: 'url-loader',
options: {
mimetype: 'image/png'
}
}
]
}
]
},
resolve: {
extensions: [ '*', '.js', '.jsx', '.tsx', '.ts', '.css', '.sa' ],
alias: {
'react-dom': '@hot-loader/react-dom'
}
},
devServer: {
port: 4000,
contentBase: './dist',
proxy: {
'/myserver': {
target: {
host: 'localhost',
protocol: 'http:',
port: 8080
}
}
},
hot: true
},
"devtool": "source-map",
plugins: [
new webpack.HotModuleReplacementPlugin(),
new webpack.optimize.ModuleConcatenationPlugin(),
new webpack.ContextReplacementPlugin(/moment[\/\\]locale$/, /en/),
new LodashModuleReplacementPlugin(),
new HtmlWebpackPlugin({
template: 'index.html',
inject: false,
appMountId: 'app'
})
],
optimization: {
runtimeChunk: 'single',
splitChunks: {
cacheGroups: {
vendor: {
test: /[\\/]node_modules[\\/]/,
name: 'vendors',
chunks: 'all'
}
}
}
}
};
module.exports = (env, argv) => {
if (argv.hot) {
// Cannot use 'contenthash' when hot reloading is enabled.
config.output.filename = '[name].[hash].js';
}
return config;
};
//index.tsx
import App from './App';
import 'bootstrap/dist/css/bootstrap.min.css';
import * as ReactDOM from 'react-dom';
import * as React from 'react';
import "core-js/modules/es.promise";
import "core-js/modules/es.array.iterator";
if (module.hot) {
ReactDOM.render(<App />, document.getElementById('app'));
module.hot.accept();
}
//App.tsx
import { store, persistor } from './redux/store';
import Framework from './layouts/Framework';
import { Provider } from 'react-redux';
import { PersistGate } from 'redux-persist/integration/react';
import * as React from 'react';
import { hot } from 'react-hot-loader/root'
class App extends React.Component {
render() {
return (
<div>
<Provider store={store}>
<PersistGate loading={null} persistor={persistor}>
<Framework />
</PersistGate>
</Provider>
</div>
);
}
}
export default hot(App);
Общий
/ => Успешная горячая перезагрузка в браузере после изменения компонента или обновления в браузере
/ main, /firstComp, / secondComp и т. д ... => ошибка горячей перезагрузки в браузере после изменения компонента или обновления в браузере. он показывает, что не может получить / {адрес страницы}
Я хочу получить горячую перекодировку любой страницы из моего веб-пакета.
Спасибо.