[rush-serve-plugin] The auto-picked port never reaches the port parameter: `_value` is ignored since ts-command-line uses `#value`
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 72/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- nodejs, typescript
- Bereich
- build-system, tooling
Rechercherichtung
Beginne bei rush-plugins/rush-serve-plugin/src/phasedCommandHandler.ts etwa in Zeile 241, wo der automatisch gewählte Port in portParameter._value geschrieben wird, und bei libraries/ts-command-line/src/parameters/CommandLineIntegerParameter.ts, um zu sehen, dass der Wert in #value gehalten und nur über _setValue() gesetzt wird. Fertig ist, wenn ein Handler-Lauf mit Port 0 portParameter.value auf den aktiven Port setzt, und ein Unit-Test deckt das ab. Bestätige die Korrektur mit den bestehenden Tests des Serve-Plugins, bevor du eine öffentliche Alternative zum internen Setter vorschlägst.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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.
- Vorherrschende Sprache
- TypeScript
- Sterne
- 6.5k
- Forks
- 710
- Ø Merge
- 1 T. 15 Std.
- Gemergte PRs (30 T.)
- 37
Entwicklungsumgebung
Startet den Dev-Container des Projekts im Browser, mit Ihrem eigenen GitHub-Konto.
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Kein Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus microsoft/rushstack
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag
-
[rush] Upgrade the pnpm-sync-lib dependency to 0.3.5.Evtl. vergeben @martinnaj hat das vor 17 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
microsoft/rushstack#5971 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
microsoft/rushstack#5902 · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in microsoft/rushstack
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 77/100
TomerAberbach/profiler-md#733 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug priority: medium
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
brentspine/brents-toasts#143 ·
-
🐛 bug 🗺️ DB Models & Ops
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 83/100
LibreChat-AI/LibreChat#17214 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 67/100
Wavvon/Wavvon-clients#136 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
umami-software/umami#4637 ·
Maintainer antworten meist innerhalb von 3 Tagen