Generates Broken CommonJS From Typescript
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 42/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- javascript, typescript
- Área
- build-system, tooling
Línea de trabajo
Comienza con la reproducción enlazada de breakjs y compara dist/index.cjs con la salida de tsc y de la compilación de modern-JavaScript. Rastrea la transformación de async/await utilizada para el bucle while; el trabajo estará terminado cuando el CommonJS generado conserve el comportamiento de continue e imprima "AT THE TOP" después de la Promise esperada.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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
- Lenguaje dominante
- JavaScript
- Estrellas
- 8.1k
- Forks
- 358
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de developit/microbundle
-
CSS
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
developit/microbundle#1002 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
developit/microbundle#789 · 1 comentario ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
developit/microbundle#1100 · 4 comentarios ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
developit/microbundle#1094 · 1 comentario ·
-
Disable minification by default Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
developit/microbundle#1093 · 3 comentarios · 1 reacción ·
Todos los issues de developit/microbundle
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
-
Theme loads third-party resources on every page (jsdelivr web font, cdnjs Font Awesome) – GDPR Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
docToolchain/docToolchain#1705 ·
-
Timezone select lists one option per character; duplicate "Failed" reason; shared tracker popover id Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
nightscout/nocturne#1414 ·
-
bug v2
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
modelcontextprotocol/inspector#2458 · 1 comentario ·
-
Mend: dependency security vulnerability status: needs triage 🕵️♀️
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
carbon-design-system/ibm-products#9907 ·