nodejs / nodejs/node

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

Ouverte
#48,577 5 commentaires 5 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

loaders stale
Langage dominant
JavaScript
Étoiles
122k
Forks
37.3k
Merge moyen
4 j 2 h
PR mergées (30 j)
283

Description

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.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par reproduire les commandes Node 18.x et 20.x présentées dans l’issue avec foo.mjs et bar.mjs. Consultez la discussion liée #44710 et la section Custom ESM Loader Hooks de doc/changelogs/CHANGELOG_V20.md pour comprendre le comportement prévu. Le travail sera considéré comme terminé lorsque la régression de process.argv sera corrigée ou que le breaking change confirmé sera documenté dans les notes de version appropriées.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
javascript, node.js
Domaine
backend
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
Active
Clarté
Plutôt claire
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.