Skip to content
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

Node 22 doesn't honor the --watch-preserve-output command-line parameter #56330

Open
claudioc opened this issue Dec 21, 2024 · 5 comments
Open

Comments

@claudioc
Copy link

Version

22.12.0

Platform

macOS 14.7.2

Subsystem

No response

What steps will reproduce the bug?

I have this command that I run with npm: node --env-file=.env --watch-preserve-output --watch-path ./dist/server and it has always worked as expected. Now, after switching (using nvm) to node 22, the screen is always cleared upon restarting. If I switch back to node 20 (with nvm), the --watch-preserve-output parameter is honored.

How often does it reproduce? Is there a required condition?

It happens all the times

What is the expected behavior? Why is that the expected behavior?

This is apparently a regression on the node 20 line.

What do you see instead?

The screen is cleared upon restarting the server

Additional information

No response

@abdullahshahid95
Copy link

You can run this command in following way, it runs identically in both node 20 and 22.
node --env-file=.env --watch --watch-preserve-output ./dist/server

@claudioc
Copy link
Author

@abdullahshahid95 my full script line is the following. Your line doesn't contain the script to run

"dev:start": "wait-on ./dist/server/app.js && node --env-file=.env --watch-preserve-output --watch-path ./dist/server ./dist/server/app.js",

@abdullahshahid95
Copy link

@claudioc As per the example in https://nodejs.org/api/cli.html#--watch-preserve-output, --watch-preserve-output is used with --watch. If you add --watch before --watch-preserve-output, it may preserve previous logs. I have added it below.
"dev:start": "wait-on ./dist/server/app.js && node --env-file=.env --watch --watch-preserve-output --watch-path ./dist/server ./dist/server/app.js"

@claudioc
Copy link
Author

claudioc commented Dec 24, 2024

@abdullahshahid95 OK, adding the --watch flag works again. You are pointing to the documentation, but the documentation is confusing at least:

--watch-path "Starts Node.js in watch mode and specifies what paths to watch."

So why the --watch is ALSO needed to have the -watch-preserve-output work as expected!? Something is a bit unclear: according to the doc you should not need to add --watch to have -watch-preserve-output

@abdullahshahid95
Copy link

abdullahshahid95 commented Dec 24, 2024

@claudioc Yes, it's definitely confusing :-)
I tried few combinations and found out, --watch watches main file and imported files. --watch-path only watches files in specific paths.
--watch-preserve-output works only with --watch and preserves previous output.
Screenshot of documentation below.
Image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants