Я новый, чтобы реагировать. Я создал приложение, использующее два сервера: prod.server.js
, который содержит все мои маршруты API, и dev.server.js
, который инициализирует webpack-dev-сервер и запускается на отдельном порту с prod.server.js
и проксирует весь запрос на /api/*
путь к производственному серверу. Я разделил эти два, так что, когда я, наконец, подталкиваю свое приложение к производству, мне не нужно редактировать сервер.ReactJS: Hot Reload Не работает
Вот мои два сервера:
Производство серверов (prod.server.js)
const express = require("express");
const api = require('./server/routes/api')
const http = require('./server/routes/http')
const app = express();
app.use(express.static(process.cwd() + '/public'));
api(app, __dirname + "/public");
http(app, __dirname + "/public");
app.get('/*', (req, res) => {
res.sendFile(__dirname + "/index.html")
});
app.listen(process.env.NODE_ENV || 8001, function() {
console.log("Application started on port", process.env.NODE_ENV || 8001);
});
Development Server (dev.server.js)
var WebpackDevServer = require('webpack-dev-server');
const api = require('./server/routes/api')
const http = require('./server/routes/http')
var webpack = require('webpack');
var config = require('./webpack.config');
var path = require('path');
var compiler = webpack(config);
var server = new WebpackDevServer(compiler, {
proxy: {
'/api': {
target: 'http://localhost:8001',
secure: false
}
},
historyApiFallback: true,
hot: true,
filename: 'bundle.js',
publicPath: '/',
stats: {
colors: true,
},
});
server.listen(8000, function() {
console.log("Application Dev running at port 8000");
});
я ожидаю что, когда я обновляю свой ответ, браузер должен подбирать изменения и перезагружать соответственно, но этого не происходит. Мне нужно перезагрузить, и я делаю это некоторое время, но теперь меня обманывают, я бы предпочел, чтобы была горячая перезагрузка, любая помощь?
Ниже приведена конфигурация моего webpack при необходимости.
var HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
entry: [
__dirname + "/client/index.js"
],
output: {
path: __dirname + "/public",
filename: "bundle.js"
},
module: {
loaders: [
{
test: /\.js$/,
loader: ['babel'],
query:
{
presets:
[
'es2015',
'react'
]
},
exclude: /node_modules/
},
{
test: /\.css$/,
loaders: ['style', 'css'],
exclude: /node_modules/
}
]
},
plugins:[
new HtmlWebpackPlugin({
template: __dirname + '/client/index.html'
})
]
}