[Node 20] ESM Loaders no longer have `process.argv` access
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- JavaScript
- Estrellas
- 122k
- Forks
- 37.3k
- Merge medio
- 4 d 2 h
- PR fusionados (30 d)
- 283
Descripción
Version
20.x
Platform
Darwin MacBook-Pro-2.local 21.3.0 Darwin Kernel Version 21.3.0: Wed Jan 5 21:37:58 PST 2022; root:xnu-8019.80.24~20/RELEASE_ARM64_T6000 arm64
Subsystem
No response
What steps will reproduce the bug?
// foo.mjs
console.log('argv:', process.argv);
// bar.mjs
console.log('hello from bar', process.version);
Run:
$ node --loader ./foo.mjs bar.mjs --hello=world
Output:
$ node --loader ./foo.mjs bar.mjs --hello=world
# (node:37260) ExperimentalWarning: Custom ESM Loaders is an experimental feature. This feature could change at any time
# (Use `node --trace-warnings ...` to show where the warning was created)
# argv: [
# '/.../.volta/tools/image/node/18.12.1/bin/node',
# '/.../bar.mjs',
# '--hello=world'
# ]
# hello from bar v18.12.1
$ volta install node@20.2.0 # or any 20.x
$ node --loader ./foo.mjs bar.mjs --hello=world
# (node:37288) ExperimentalWarning: Custom ESM Loaders is an experimental feature and might change at any time
# (Use `node --trace-warnings ...` to show where the warning was created)
# argv: [ '/.../.volta/tools/image/node/20.2.0/bin/node' ]
# hello from bar v20.2.0
How often does it reproduce? Is there a required condition?
Every time.
What is the expected behavior? Why is that the expected behavior?
Have access to process.argv
What do you see instead?
Doesn't receive any arguments beyond node path
Additional information
This is a breaking change introduced by #44710 & it was not listed in the PR notes.
Additionally, this breaking change wasn't listed in the 20.x Changelog
As indicated by https://github.com/nodejs/node/pull/44710#issuecomment-1609957745, the knowledge of this impact is assumed based on the user understanding (& awareness) of loaders now being off main thread.
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Empieza reproduciendo los comandos de Node 18.x y 20.x mostrados en el issue con foo.mjs y bar.mjs. Lee la discusión enlazada #44710 y la sección Custom ESM Loader Hooks de doc/changelogs/CHANGELOG_V20.md para entender el comportamiento previsto. Se considerará terminado cuando se resuelva la regresión de process.argv o se documente el cambio incompatible confirmado en las notas de la versión correspondientes.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- javascript, node.js
- Área
- backend
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Activo
- Claridad
- Bastante claro
- Aptitud para principiantes
- 45/100