Generates Broken CommonJS From Typescript
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 42/100
- Type d'issue
- Bug
- Clarté
- Plutôt claire
- Activité
- À l'abandon
- Stack technique
- javascript, typescript
- Domaine
- build-system, tooling
Piste de recherche
Commencez par la reproduction breakjs liée et comparez dist/index.cjs avec la sortie de tsc et de la compilation de modern-JavaScript. Suivez la transformation async/await utilisée pour la boucle while ; le travail est terminé lorsque le CommonJS généré préserve le comportement de continue et affiche "AT THE TOP" après la Promise attendue.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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
- Langage dominant
- JavaScript
- Étoiles
- 8.1k
- Forks
- 358
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
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 developit/microbundle
-
CSS
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
developit/microbundle#1002 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
developit/microbundle#789 · 1 commentaire ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 55/100
developit/microbundle#1100 · 4 commentaires ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
developit/microbundle#1094 · 1 commentaire ·
-
Disable minification by default Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
developit/microbundle#1093 · 3 commentaires · 1 réaction ·
Toutes les issues de developit/microbundle
Issues similaires
-
awaiting triage bug Causes friction Hop Gui P1 P2 Transforms
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
Improve Title Support Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
georgestephanis/p2026#40 ·
-
Enatega Customer and Rider app: Add-ons price is not visible to customer after order is placed. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Margaret-Petersen/food-delivery-app-clone-react-native#1981 ·