nodejs / nodejs/node

[Node 20] ESM Loaders no longer have `process.argv` access

Abierto
#48,577 5 comentarios 5 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

loaders stale
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

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. 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

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.