ваши js-файлы, скомпилированные с помощью веб-пакета, обслуживаются на localhost: 3000, а nodemon на порте 8080.
Я предполагаю, что вы используете экспресс, вы должны использовать webpack-dev-middleware, а не webpack-dev-server, таким образом вы будете обслуживать ваши реагирующие jsx / js и статические файлы с тем же портом, что и nodemon.
Кстати, если вы запускаете ваше приложение через Docker-контейнер, CMD запуска должен содержать флаг -L
.
nodemon -L server.js
ОБНОВЛЕНИЕ:
server.js
var express = require("express")
var path = require("path")
const PORT = 3000
const app = express()
//webpack
const webpack = require('webpack')
const webpackDevMiddleware = require("webpack-dev-middleware");
const webpackHotMiddleware = require("webpack-hot-middleware");
const config = require("./webpack.config.js");
const compiler = webpack(config);
// Tell express to use the webpack-dev-middleware and use the webpack.config.js
// configuration file as a base.
app.use(webpackDevMiddleware(compiler, {
publicPath: config.output.publicPath,
watchOptions: {
poll: true
}
}));
app.use(webpackHotMiddleware(compiler))
// static assets
app.use(express.static(__dirname + "./public"))
// main route
app.get("/", (req, res) =>
res.sendFile(path.resolve(__dirname, "./public/index.html"))
)
app.listen(PORT, () => console.log("App listening on port " + PORT))
webpack.config.js:
const devMode = process.env.NODE_ENV !== "production";
const path = require("path");
const webpack = require("webpack");
var HtmlWebpackPlugin = require("html-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
module.exports = {
mode: "development",
watch: true,
devtool: 'eval',
entry: ["webpack-hot-middleware/client?reload=true","./src/index.jsx"],
output: {
filename: "js/bundle.js",
path: path.resolve(__dirname, "./public"),
publicPath: "/"
},
module: {
rules: [
{ test: /\.jsx$/, exclude: /node_modules/, loader: "babel-loader" },
{
test: /\.s?[ac]ss$/,
use: [
devMode ? "style-loader" : MiniCssExtractPlugin.loader,
"css-loader",
"postcss-loader",
"sass-loader"
]
}
]
},
resolve: {
modules: ["node_modules"],
extensions: [".js", ".json", ".jsx", ".css", ".scss"]
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new HtmlWebpackPlugin({
template: './public/index.html'
}),
new MiniCssExtractPlugin({
filename: devMode ? "[name].css" : "[name].[hash].css",
chunkFilename: devMode ? "[id].css" : "[id].[hash].css"
})
]
};
nodemon.json:
{
"ignore": [".git", "node_modules/**/node_modules"],
"ext": "js,json,html"
}