Open aheissenberger opened 1 year ago
Thank you for reporting!
This is a bug in Node.js itself and, per the comments on the issue, will be fixed in 20.1.0 (or 20.0.1 if one is ever released). Until then I suggest you downgrade to 18 or 19.
Reopening because 20.1.0 was released today but it hasn't solved the problem. I'm still pretty sure it's a Node issue but we need to investigate just in case.
@cyco130 My test with node 20.1.0 show no change in the behavior - thanks for finding the node issue! Do you have a simpler setup to reproduce the problem? I would like to post a framework independent code sample to the node repo to show them the that the problem is not fixed but I know too less about loaders to prepare such an example.
@cyco130 please have a look at this problem - I tested with node version 20.2.0
and the problem still exists.
I now know the root cause: Node 20 runs ESM loaders in a separate thread but Vavite's loader relies on a global variable. This will require a substantial rework of the system: We'll have to proxy everything through a message channel. As such, it will require quite a bit of time :(
If you're using --use-loader
for sourcemap support, you might not need it anymore. If you're using it for some other reason, I suggest you stick with Node 18 or 19 for the time being as the fix might take some time to complete.
I now know the root cause: Node 20 runs ESM loaders in a separate thread but Vavite's loader relies on a global variable. This will require a substantial rework of the system: We'll have to proxy everything through a message channel. As such, it will require quite a bit of time :(
🙁 this sounds really like a lot of work - maybe you should not support nodejs v20.x and exit the loader with a message pointing to this issue
If you're using
--use-loader
for sourcemap support, you might not need it anymore. If you're using it for some other reason, I suggest you stick with Node 18 or 19 for the time being as the fix might take some time to complete.
Debugging the backend with sourcemaps is my only use case and I can confirm this works now with nodejs
v20.2.0 and even with version v20.0.0 like a charm - thank you!!
The command will finish after some time without any output:
a look at the processes (ps xa) shows these processes still running in the background:
This problem does not exist if I downgrade to node version 18 - replace 20:
.devcontainer/devcontainer.json
switch number in image tag..javascript-node:0-20-bullseye
Here is my repo including a VSCode DevContainer to simulate the problem: https://github.com/aheissenberger/vavite-node-loader-node20-fail
I have exactly the same problem with the nodejs 20.0.0 version on MacOS installed with
brew
.