Generates Broken CommonJS From Typescript
還沒有人認領這個 Issue。
評估
- 難度
- 4/5
- 預估耗時
- 3-5 天
- 新手友好度
- 42/100
- Issue 類型
- 缺陷
- 描述清晰度
- 基本清楚
- 活躍度
- 停滯
- 技術堆疊
- javascript, typescript
- 領域
- build-system, tooling
研究方向
從連結的 breakjs 重現開始,將 dist/index.cjs 與 tsc 的輸出以及 modern-JavaScript 編譯結果進行比較。追蹤 while 迴圈所使用的 async/await 轉換;當產生的 CommonJS 保留 continue 的行為,並在 await 的 Promise 之後輸出 "AT THE TOP" 時即完成。
由索引模型根據 Issue 內容生成。
描述
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
- 主要語言
- JavaScript
- 星號
- 8.1k
- 分支
- 358
- PR 合併指標
- 30 天內沒有已合併 PR
貢獻指南
這個儲存庫沒有索引到貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
developit/microbundle 的其他 Issue
-
CSS
難度 2/5 1-3 小時 新手友好度 68/100
developit/microbundle#1002 ·
-
難度 2/5 1-3 小時 新手友好度 75/100
developit/microbundle#789 · 1 則留言 ·
-
難度 3/5 1-2 天 新手友好度 55/100
developit/microbundle#1100 · 4 則留言 ·
-
難度 4/5 3-5 天 新手友好度 35/100
developit/microbundle#1094 · 1 則留言 ·
-
難度 3/5 1-2 天 新手友好度 45/100
developit/microbundle#1093 · 3 則留言 · 1 個 reaction ·
查看 developit/microbundle 的全部 Issue
相似的 Issue
-
bug confirmed issue
難度 2/5 1-3 小時 新手友好度 75/100
open-webui/open-webui#30750 · 1 則留言 ·
-
難度 2/5 1-3 小時 新手友好度 75/100
-
難度 2/5 1-3 小時 新手友好度 70/100
-
難度 2/5 1-3 小時 新手友好度 75/100
-
Mend: dependency security vulnerability untriaged
難度 2/5 1-3 小時 新手友好度 70/100