[rush-serve-plugin] The auto-picked port never reaches the port parameter: `_value` is ignored since ts-command-line uses `#value`
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 72/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- nodejs, typescript
- Domaine
- build-system, tooling
Piste de recherche
Commence par rush-plugins/rush-serve-plugin/src/phasedCommandHandler.ts vers la ligne 241, où le port choisi automatiquement est écrit dans portParameter._value, puis par libraries/ts-command-line/src/parameters/CommandLineIntegerParameter.ts pour voir que la valeur est conservée dans #value et définie uniquement via _setValue(). C'est terminé lorsqu'une exécution du handler avec le port 0 laisse portParameter.value égal au port actif, avec un test unitaire qui le couvre. Confirme la correction avec les tests existants du serve-plugin avant de proposer une alternative publique au setter interne.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Summary
When rush start (or another watch-mode phased command with portParameterLongName) runs without an explicit port, @rushstack/rush-serve-plugin listens on an OS-assigned port and then tries to publish it through the command-line parameter, so that other plugins (and the operations that receive the parameter) see the real port. It does so by writing portParameter._value. Since @rushstack/ts-command-line switched parameters to native private fields (#5943), CommandLineIntegerParameter stores its value in #value, so the assignment only adds an unused property. portParameter.value stays undefined, and nothing downstream sees the port.
Versions
@microsoft/rush/@rushstack/rush-serve-plugin5.181.0@rushstack/ts-command-line5.3.17 (any version that includes #5943)- Node.js 22
Repro
- Configure
rush-serve-pluginwithportParameterLongName: "--port", and define--portas anintegerparameter of thestartcommand, associated with a phase. - Add a second plugin that taps
createOperationsAsyncafter the serve plugin (any stage above -1) and logscontext.customParameters.get('--port').value. - Run
rush startwithout--port.
Expected
The serve plugin logs Content is being served from: https://localhost:<port>/, and the second plugin logs the same <port>.
Actual
The second plugin logs undefined. An explicit --port 4321 works, because then the value comes from the parser.
Code pointer (main)
rush-plugins/rush-serve-plugin/src/phasedCommandHandler.ts, line 241:(portParameter as unknown as { _value?: string })._value = `${activePort}`;libraries/ts-command-line/src/parameters/CommandLineIntegerParameter.ts: the value lives in#valueand is written only by_setValue().
Suggested fix
Set the value through the parameter's setter (it also stores a number, as the integer parameter expects, instead of a string):
(portParameter as unknown as { _setValue(data: unknown): void })._setValue(activePort);
Since _setValue is @internal, a public way for a plugin to override a parsed parameter value (or a session-level API that publishes the serve plugin's active port) would avoid the cast. A unit test that runs the handler with port 0 and checks portParameter.value would catch a regression.
Filed with help from GitHub Copilot (AI); reviewed by the reporter.
- Langage dominant
- TypeScript
- Étoiles
- 6.5k
- Forks
- 710
- Merge moyen
- 1 j 15 h
- PR mergées (30 j)
- 37
Préparer son environnement
Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Aucun guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de microsoft/rushstack
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
[rush] Upgrade the pnpm-sync-lib dependency to 0.3.5.Peut-être pris @martinnaj l’a pris il y a 19 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
microsoft/rushstack#5971 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
microsoft/rushstack#5902 · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de microsoft/rushstack
Issues similaires
-
e2e-failure ready-to-code
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
redhat-developer/rhdh-plugin-export-overlays#4460 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 77/100
Les mainteneurs répondent en général sous 1 jour
-
docs(api): openapi.yaml still documents gif-tools optimize colors as 2-256 instead of 2, 4, 16, 256Ouvertearea: backend documentation priority: low
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
snapotter-hq/SnapOtter#2919 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 77/100
obsidianmd/pele#39 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
biomejs/biome#12475 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour