Generates Broken CommonJS From Typescript
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 42/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- javascript, typescript
- Ambito
- build-system, tooling
Direzione di ricerca
Inizia con la riproduzione collegata di breakjs e confronta dist/index.cjs con l'output di tsc e della compilazione di modern-JavaScript. Traccia la trasformazione async/await usata per il ciclo while; il lavoro è terminato quando il CommonJS generato conserva il comportamento di continue e stampa "AT THE TOP" dopo la Promise attesa.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Microbundle creates broken CommonJS code when compiling from Typescript.
The continue keyword in the following code is not respected in the compiled CommonJS code.
async function brokenContinue() {
let j = 0;
while (j <= 3) {
j++;
console.log("AT THE TOP");
if (j === 1) {
console.log("\t- j === 1");
console.log("\t- waiting for 100ms");
await new Promise((resolve) => setTimeout(resolve, 100));
console.log('\t- continue, next log will be "AT THE TOP"');
continue;
}
console.log("AT THE BOTTOM");
}
}
void brokenContinue();
The output is:
$ node dist/index.cjs
AT THE TOP
- j === 1
- waiting for 100ms
- continue, next log will be "AT THE TOP"
AT THE BOTTOM <------- THIS SHOULD READ "AT THE TOP"
AT THE TOP
AT THE BOTTOM
AT THE TOP
AT THE BOTTOM
AT THE TOP
AT THE BOTTOM
The problem is caused by the usage of async/await within the while loop. Commenting out: await new Promise((resolve) => setTimeout(resolve, 100)); produces the expected result.
Notes:
- Compiling using
tscgenerates JS that works correctly. - Compiling to modern JS generates code that works correctly.
Here's a repo containing the setup that caused the issue: https://github.com/luxo-ai/breakjs
- Lingua principale
- JavaScript
- Stelle
- 8.1k
- Fork
- 358
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di developit/microbundle
-
CSS
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
developit/microbundle#1002 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
developit/microbundle#789 · 1 commento ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 55/100
developit/microbundle#1100 · 4 commenti ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
developit/microbundle#1094 · 1 commento ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
developit/microbundle#1093 · 3 commenti · 1 reazione ·
Tutte le issue di developit/microbundle
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
-
Theme loads third-party resources on every page (jsdelivr web font, cdnjs Font Awesome) – GDPR Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
docToolchain/docToolchain#1705 ·
-
Timezone select lists one option per character; duplicate "Failed" reason; shared tracker popover id Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
nightscout/nocturne#1414 ·
-
bug v2
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
modelcontextprotocol/inspector#2458 · 1 commento ·
-
Mend: dependency security vulnerability status: needs triage 🕵️♀️
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
carbon-design-system/ibm-products#9907 ·