ฉันสร้างIonic
app ที่ใช้es6 modules
, TypeScript
และSystemJS
เป็นรถตักดินแบบโมดูล นี่คือการตั้งค่าของฉัน:
tsconfig.json:
{
"compilerOptions": {
...
"target": "es5",
"module": "system",
...
}
}
index.html:
<script src="lib/system.js"></script>
<script src="systemjs.config.js"></script>
<script>System.import('js/app.js')</script>
ตัวอย่างสคริปต์ (TypeScript):
import {IConfig} from "./app-config";
export class ConfigLoader {
...
}
ทุกอย่างทำงานได้ดีใน Chrome อย่างไรก็ตามเมื่อทำการดีบักโดยใช้ Web Inspector ของ Safari ฉันไม่สามารถวางเบรกพอยต์ในสคริปต์ได้เนื่องจาก Web Inspector แสดงเฉพาะสคริปต์ที่โหลดโดยตรงจาก HTML (ผ่านแท็กสคริปต์) ไม่ใช่สคริปต์ที่โหลดโดย XHR (ในกรณีของฉันโดย SystemJS) . ซึ่งหมายความว่าฉันไม่สามารถดีบักสคริปต์ของตัวเองซึ่งแน่นอนว่าไม่สามารถยอมรับได้
ฉันพยายามแก้ไขปัญหานี้โดยใช้ SystemJS เหมือนก่อนหน้านี้ แต่ยังวางแท็กสคริปต์ใน html เช่น:
<script src="lib/system.js"></script>
<script src="systemjs.config.js"></script>
<script src="js/app-config.js"></script>
... other app scripts
<script>System.import('js/app.js')</script>
อย่างไรก็ตามสิ่งนี้ไม่ได้ผลเนื่องจาก SystemJS ดูเหมือนจะไม่พอใจกับสิ่งนี้:
เรียก System.register ไม่ถูกต้อง การเรียก System.register แบบไม่ระบุชื่อสามารถทำได้โดยโมดูลที่โหลดโดย SystemJS.import เท่านั้นไม่ใช่ผ่านแท็กสคริปต์
ฉันจะใช้ SystemJS ได้อย่างไรและในเวลาเดียวกันจะมีความสามารถในการดีบักใน Safari ได้อย่างไร ฉันกำลังมองหาวิธีแก้ปัญหาที่ซับซ้อนกว่า 'ใส่คำสั่งดีบักเกอร์ในแต่ละสคริปต์' ...