Gỡ lỗi trong Trình kiểm tra web của Safari, khi sử dụng trình tải mô-đun như SystemJS


121

Tôi đang tạo ra một Ionicứng dụng sử dụng es6 modules, TypeScriptSystemJSnhư một bộ nạp mô-đun. Đây là thiết lập của tôi:

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>

tập lệnh mẫu (TypeScript):

import {IConfig} from "./app-config";

export class ConfigLoader {
    ...
}

Mọi thứ đều chạy tuyệt vời trong Chrome. Tuy nhiên, khi gỡ lỗi bằng Trình kiểm tra web của Safari, tôi không thể đặt bất kỳ điểm ngắt nào trong các tập lệnh vì Trình kiểm tra web chỉ hiển thị các tập lệnh được tải trực tiếp từ HTML (thông qua các thẻ tập lệnh) chứ không phải các tập lệnh được tải bởi XHR (trong trường hợp của tôi là SystemJS) . Điều này có nghĩa là tôi không thể gỡ lỗi các tập lệnh của riêng mình, điều này tất nhiên là không thể chấp nhận được.

Tôi đã cố gắng giải quyết vấn đề này bằng cách sử dụng SystemJS như trước đây, nhưng cũng đặt các thẻ script trong html, như sau:

<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>

Tuy nhiên, điều này không hoạt động, vì SystemJS có vẻ không hài lòng về điều này:

Cuộc gọi System.register không hợp lệ. Lệnh gọi System.register ẩn danh chỉ có thể được thực hiện bởi các mô-đun được tải bởi SystemJS.import chứ không phải thông qua các thẻ script.

Làm cách nào để sử dụng SystemJS và đồng thời có khả năng gỡ lỗi trong Safari? Tôi đang tìm kiếm một giải pháp phức tạp hơn một chút so với 'đặt một câu lệnh trình gỡ lỗi trong mỗi tập lệnh' ...


4
Đây có vẻ là một lời khuyên kỳ lạ, và vì câu hỏi đã được mở từ ngày 11 tháng 1, nhưng tôi khuyên bạn nên đi sâu vào webpack. Tôi đã đọc SystemJS, nhưng tôi không cảm thấy nó sẽ đáp ứng nhu cầu của bạn.
DevNebulae

Có vẻ như nếu bạn không thể tải tập lệnh vào html giống như bạn đang làm thì bạn đã gặp may. Chrome dường như là trình duyệt duy nhất hỗ trợ điều này như bạn đã thấy.
The Muffin Man,


3
sử dụng debuggerJS từ khóa
Kamil Kiełczewski

1
@ KamilKiełczewski Câu hỏi đặt ra một cách rõ ràng khẳng định: 'Tôi đang tìm kiếm một giải pháp một chút phức tạp hơn 'đưa một tuyên bố gỡ lỗi trong mỗi kịch bản' ...'
fikkatra

Câu trả lời:


1

Chà, có lẽ bạn có thể sử dụng một số IDE như WebStorm với Trình gỡ lỗi mạnh cho Web và Node.

Ví dụ:

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

Bạn có thể xem thêm về trình gỡ lỗi WebStorm tại đây .

Một số lựa chọn thay thế cho WebStorm:

  1. Atom (Miễn phí)
  2. Intellij IDEA (cộng đồng: Miễn phí)
  3. Mã Visual Studio (Miễn phí)
  4. ...

PS: Tôi phát triển các ứng dụng Ionic và React với WebStorm: D


1
Tôi đã cố gắng tham gia vào Webstorm, nhưng tôi có rất nhiều tính năng hữu ích được cung cấp bởi hệ thống tiện ích mở rộng trong VS Code mà Webstorm không có, thật khó để thực hiện được.
Stephen M Irving


-4

ghi vào từ khóa tệp js debuggervà mở inspect elementvào explorer

khi làm mới trang và chế độ gỡ lỗi ...

tận hưởng nó ;-)


3
Câu hỏi nêu rõ "Tôi đang tìm kiếm một giải pháp phức tạp hơn một chút so với 'đặt một câu lệnh gỡ lỗi trong mỗi tập lệnh' ..."
fikkatra
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.