-
-
Notifications
You must be signed in to change notification settings - Fork 8.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Live reload not working with reverse proxy #7912
Comments
Hey I'm not a Docker / Codespace expert, can you provide us a runnable sandbox or clearer repro instructions so that we are sure to reproduce your problem without having to figure out the details ourselves? Can you explain why this config solves the problem?
Where does this solution come from exactly? What does |
The snippet fixes the problem, since it tells HMR to use the same port that the website is currently running on. You should also consider always passing The following code snippets go together, and this is where the issue arises:
Will provide a repo with steps to reproduce asap |
Yeah no there isn't really a repo to provide. |
@jeengbe this is an edge case and I don't want to spend 1 day relearning how to install and configure apache. If you want it to be solved faster, provide clear instructions to reproduce it, preferably with Docker. Yes, I'm asking you to invest your own time to save mine. Now if you can create a PR where it doesn't change the behavior at all for regular users, but solve your problem, I'm ok to merge it blindly. I'm ok to add a secret env variable just for this for example. Note I believe this is a decent escape hatch you can use today with a docusaurus plugin: function CustomDevServerPlugin() {
return {
name: "custom-dev-server-plugin",
configureWebpack() {
return {
devServer: {
client: {
webSocketURL: {
port: 0
}
}
}
};
}
};
} Please give it a try and let me know how it works So what we implement here would just be a convenient shortcut for the above? |
I do very well understand that. Luckily, I had a similar configuration lying around and quickly managed to throw together a working sample repository. Note that you might have to wait a little for Docusaurus to finish building upon launching it. The patch fixes this issue as it, as outlined above with code references, makes hmr use the port the site is being accessed on. |
Do not remap the port with Docker. "Remap" to the same port and if you need a different port change it via the |
@splurgebudget try v3 canary, cf #7951 (comment) |
Have you read the Contributing Guidelines on issues?
Prerequisites
npm run clear
oryarn clear
command.rm -rf node_modules yarn.lock package-lock.json
and re-installing packages.Description
When running Docusaurus behind a reverse proxy (Codespaces, code-server etc.), Docusaurus is likely being accessed under a different url than it is being exposed on. (eg. localhost:3000 --Docker & Reverse Proxy-> dev.mycodespace.io)
In this scenario (Docusaurus needs to be run with
--host 0.0.0.0
), webpack uses the same options for the web socket server as for the dev server, and passes those on to the client:protocol=ws%3A&hostname=0.0.0.0&port=3000&pathname=%2Fws&logging=warn&reconnect=10
(https://github.com/webpack/webpack-dev-server/blob/master/lib/Server.js#L634). Luckily,
0.0.0.0
is replaced byself.location.hostname
(https://github.com/webpack/webpack-dev-server/blob/master/client-src/utils/createSocketURL.js#L91), same goes for the protocol, but there is no way to correct the incorrect port, so there must be a way for the developer to specify this. This should be implemented here: https://github.com/facebook/docusaurus/blob/main/packages/docusaurus/src/commands/start.ts#L190For those who are looking for a solution for the time being, this patch will make webpack hot reload connect to
self.location.port
.Reproducible demo
No response
Steps to reproduce
pnpm start --host 0.0.0.0
Expected behavior
Docusaurus should automatically refresh after changes to the source file.
Actual behavior
It does not.
Your environment
pnpm start --host 0.0.0.0
inside a Docker Container that rebinds:3000
->:3007
hidden behind a reverse proxy that serves:3007
ondev.mycodespace.io
Self-service
The text was updated successfully, but these errors were encountered: