-
Notifications
You must be signed in to change notification settings - Fork 30.3k
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
Check cwd before spawning child process #11520
Comments
That's going to be difficult because the error needs to bubble up from a long way down. I don't think it can be done without backwards-incompatible changes to libuv, which means it won't happen before libuv v2.0. |
This means that checking the cwd beforehand (with |
No, that's prone to race conditions (TOCTOU issues.) It's going to work alright 99% of the time and that might be acceptable for an npm module but requirements for node.js core are more stringent. |
How about add an option something like: .spawn(path, { cwd: "some/cwd", checkCWD: true }); |
Check-before-use is an anti-pattern. It's not something to codify in the API. |
@mrpeu Probably because you use |
@bnoordhuis why is that? |
Doesn't the current code follow Given the error is captured right and only issue is with the error message, how about making this explicit in the doc? |
Could you do a check after the fact simply for the purpose of giving a better error message? i.e. if you get an ENOENT, check if the cwd exists, if not then give an error message specific to that. In the worst case you provide a wrong error message, but not a wrong program behavior. |
Still happening to me. Is there at least a manual way to work around this? Ubuntu on armv7. |
@ctday You can check after the fact whether it is the cwd or the node executable that is ENOENT (use |
Ok, thanks. |
There has been no activity on this feature request for 5 months and it is unlikely to be implemented. It will be closed 6 months after the last non-automated comment. For more information on how the project manages feature requests, please consult the feature request management document. |
There has been no activity on this feature request and it is being closed. If you feel closing this issue is not the right thing to do, please leave a comment. For more information on how the project manages feature requests, please consult the feature request management document. |
When a cwd is passed to
child_process.spawn()
that does not exist, node just reportsENOENT
:This error message is very confusing because it reads like
/usr/local/bin/node
does not exist. It took me several hours to debug this issue, including serious doubts in my sanity 😁.Do you think it is feasible to check the cwd before spawning the process, or is there a use-case/is it possible to spawn a process with a non-existent cwd? If it's not feasible, would it be an option to include the cwd in the error message to give a slight hint in the right direction?
The text was updated successfully, but these errors were encountered: