timezone info unavailable in builds with small ICU

Aperta
#66,184 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
45/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
javascript, nodejs

Direzione di ricerca

Reproduce the failure with the provided nix-shell command using small ICU and Temporal, then trace Temporal.Instant.toString() through the timezone-info loading path. Inspect how ICU computes the length of the final Zoneinfo64 item. Done means the command completes without the timezone error and the assertion produces the expected string.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Version

main

Platform

Subsystem

No response

What steps will reproduce the bug?
nix-shell --argstr icu small --arg withTemporal true --arg devTools '[]' --arg benchmarkTools '[]' --run 'make build-ci -j8'
./node -e 'assert.strictEqual(Temporal.Instant.from("1969-07-20T20:17:00Z").toString(), "1969-07-20T20:17:00Z")'
How often does it reproduce? Is there a required condition?

small ICU with Temporal

What is the expected behavior? Why is that the expected behavior?

Temporal.Instant.from("1969-07-20T20:17:00Z").toString() should output the input string

What do you see instead?
assert.strictEqual(Temporal.Instant.from("1969-07-20T20:17:00Z").toString(), "1969-07-20T20:17:00Z")
                                                                 ^

Error: Temporal error: Internal error: Failed to load timezone info.
    at Instant.toString (<anonymous>)
    at [eval]:1:66
    at runScriptInThisContext (node:internal/vm:219:10)
    at node:internal/process/execution:485:12
    at [eval]-wrapper:6:24
    at runScriptInContext (node:internal/process/execution:483:60)
    at evalFunction (node:internal/process/execution:317:30)
    at evalTypeScript (node:internal/process/execution:329:3)
    at node:internal/main/eval_string:71:3

Node.js v27.0.0-pre
Additional information

Refs: https://github.com/nodejs/node/issues/62676

According to @srl295, this is due to how ICU compute length: it compares the position of the item and the position of the next item; in this case, Zoneinfo64 is the last item, so there are no "next item" to compute the length so it assumes it's empty and throws.

Lingua principale
JavaScript
Stelle
122k
Fork
37.4k
Merge medio
4g 4h
PR unite (30g)
276

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di nodejs/node

Tutte le issue di nodejs/node

Issue simili

Altre issue su JavaScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.