Egret項目Typescript的編譯報錯


今天編譯項目,出現了一個奇怪的報錯,如下:

E:\engine\egret-core-3.1.2\tools\lib\typescript\tsclark.js:41531
1>                  if (file.name.toLowerCase() in sortedMap)
1>                                                 ^
1>  RangeError: Maximum call stack size exceeded
1>      at insert (E:\engine\egret-core-3.1.2\tools\lib\typescript\tsclark.js:41531:48)
1>      at insert (E:\engine\egret-core-3.1.2\tools\lib\typescript\tsclark.js:41534:21)
1>      at insert (E:\engine\egret-core-3.1.2\tools\lib\typescript\tsclark.js:41534:21)
1>      at insert (E:\engine\egret-core-3.1.2\tools\lib\typescript\tsclark.js:41534:21)
1>      at insert (E:\engine\egret-core-3.1.2\tools\lib\typescript\tsclark.js:41534:21)
1>      at insert (E:\engine\egret-core-3.1.2\tools\lib\typescript\tsclark.js:41534:21)
1>      at insert (E:\engine\egret-core-3.1.2\tools\lib\typescript\tsclark.js:41534:21)
1>      at insert (E:\engine\egret-core-3.1.2\tools\lib\typescript\tsclark.js:41534:21)
1>      at insert (E:\engine\egret-core-3.1.2\tools\lib\typescript\tsclark.js:41534:21)
1>      at insert (E:\engine\egret-core-3.1.2\tools\lib\typescript\tsclark.js:41534:21)

由於報錯沒有給出詳細的信息,只是大概的可以看出和解析代碼文件進入了死循環相關,最后只能一次次回退提交來調試。

最后找到了問題的所在,這里簡單的記錄一下:

假設我有一個A.ts:

1 class A {}
2 class C extends B {}

還有一個B.ts:

1 class B extends A {}

就會出現這個問題,繼承的一個類如果在其他的文件中,而該文件中的類又繼承了當前文件中的類就會出現這個問題。

找到問題解決方法就多了,可以添加一個C.ts把類C放入,可以將類B放入A.ts文件中,只有避免出現上面的情況即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM