admin管理员组文章数量:1122832
The issue I'm stuck on is hot reload is trying to go to localhost:8000/build
(where the application build is being used)
instead of localhost:3000/build
which is the webpack-dev-server build location.
I tried to use proxy and spent a lot of time on this. Is this possible to do? Here is my devServer config.
Edit: some of this config is unnecessary as I was trying a lot of things.
Edit2: Everything works fine when liveReload is true, but refreshing the page makes development too slow.
{
...,
devServer: {
allowedHosts: 'all',
static: {
directory: path.join(__dirname, 'build'),
watch: true,
},
port: process.env.LOCAL_PORT,
host: process.env.LOCAL_HOST,
compress: true,
client: {
logging: 'warn',
overlay: {
errors: false,
warnings: false,
runtimeErrors: true,
},
},
hot: 'only',
liveReload: false,
watchFiles: ['src/**/*'],
proxy: [
{
context: ['/build'],
target: 'http://localhost:3000',
},
],
},
}
The issue I'm stuck on is hot reload is trying to go to localhost:8000/build
(where the application build is being used)
instead of localhost:3000/build
which is the webpack-dev-server build location.
I tried to use proxy and spent a lot of time on this. Is this possible to do? Here is my devServer config.
Edit: some of this config is unnecessary as I was trying a lot of things.
Edit2: Everything works fine when liveReload is true, but refreshing the page makes development too slow.
{
...,
devServer: {
allowedHosts: 'all',
static: {
directory: path.join(__dirname, 'build'),
watch: true,
},
port: process.env.LOCAL_PORT,
host: process.env.LOCAL_HOST,
compress: true,
client: {
logging: 'warn',
overlay: {
errors: false,
warnings: false,
runtimeErrors: true,
},
},
hot: 'only',
liveReload: false,
watchFiles: ['src/**/*'],
proxy: [
{
context: ['/build'],
target: 'http://localhost:3000',
},
],
},
}
Share
Improve this question
edited Nov 21, 2024 at 15:57
Ave
asked Nov 21, 2024 at 15:49
AveAve
831 silver badge9 bronze badges
1 Answer
Reset to default 0I was able to figure it out with chatGPT.
Turns out proxy was not the correct thing to use here and I had to configure a bunch of things including:
- publicPath for both
output
anddevServer.devMiddleware
- include the websocket configuration
- add cors config
- ReactRefreshWebpackPlugin
- probably more
Here is what I ended up with working. Note this project was originally started with react-scripts so there may be some additional config needed in a raw scenario (it is not currently ejected).
const path = require('path');
const webpack = require('webpack');
const dotenv = require('dotenv');
module.exports = (env) => {
const envPath = path.resolve(__dirname, '.env');
const envVars = dotenv.config({ path: envPath }).parsed || {};
const localHost = process.env.LOCAL_HOST || 'localhost';
const localPort = process.env.LOCAL_PORT || 3000;
const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin');
return {
entry: './src/exports/index.js',
output: {
filename: 'ui.js',
path: path.resolve(__dirname, 'build'),
publicPath: `http://${localHost}:${localPort}/build/`,
},
plugins: [
new webpack.DefinePlugin({
'process.env': JSON.stringify(envVars),
}),
new ReactRefreshWebpackPlugin(),
],
module: { ... },
devServer: {
allowedHosts: 'all',
static: {
directory: path.join(__dirname, 'build'),
watch: true,
serveIndex: true,
},
headers: {
'Content-Type': 'application/javascript', // Ensure correct MIME type
'Access-Control-Allow-Origin': '*', // Allow all origins (you can restrict it to specific origins if needed)
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, PATCH, OPTIONS',
'Access-Control-Allow-Headers': 'X-Requested-With, content-type, Authorization',
},
port: process.env.LOCAL_PORT,
host: localHost,
compress: true,
client: {
logging: 'warn',
overlay: {
errors: false,
warnings: false,
runtimeErrors: true,
},
webSocketURL: {
hostname: localHost, // The hostname for the WebSocket
port: localPort, // The port for the WebSocket (matches your dev server)
protocol: 'ws', // Use 'wss' if you're using HTTPS
pathname: '/ws',
},
},
hot: true,
liveReload: false,
watchFiles: ['src/**/*'],
devMiddleware: {
publicPath: `http://${localHost}:${localPort}/build/`,
},
},
};
};
本文标签: Webpack 5 hot reload from different port (seperate application using the build)Stack Overflow
版权声明:本文标题:Webpack 5 hot reload from different port (seperate application using the build) - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1736309278a1933963.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论