Tôi có thể lấy trình gỡ lỗi JS tương tác làm việc trên PhantomJS và/hoặc CasperJS không?Thiết lập gỡ lỗi JS bằng IntelliJ/WebStorm và PhantomJS/Casper
Trả lời
PhantomJS có một lựa chọn remote-debugger-port
bạn có thể sử dụng để gỡ lỗi script casper của bạn trong các công cụ dev Chrome. Để sử dụng nó, bạn chỉ cần thực hiện kịch bản casper của bạn với lập luận này:
casperjs test script.js --remote-debugger-port=9000
Sau đó, mở ra http://localhost:9000 trong Chrome và nhấp vào liên kết about:blank
mà trình bày chính nó. Sau đó, bạn sẽ tìm thấy chính mình trong lãnh thổ công cụ dành cho nhà phát triển Chrome quen thuộc.
Do đây là một kịch bản và không phải là một trang web, để bắt đầu gỡ lỗi, bạn phải làm một trong hai điều trước khi kịch bản của bạn sẽ thực hiện:
- Trong trang công cụ dev Chrome, mở điều khiển và thực thi
__run()
đến thực sự bắt đầu tập lệnh của bạn. - Chèn một dòng
debugger;
vào mã của bạn và chạy tập lệnh casper của bạn với đối số--remote-debugger-autorun=yes
bổ sung. Làm như vậy với trang gỡ lỗi từ xa mở sẽ chạy tập lệnh cho đến khi nó chạm vào dòngdebugger;
của bạn.
Có một tuyệt vời tutorial giải thích điều này rất độc đáo.
Tôi đã không giải quyết điều này hoàn toàn, nhưng tôi chắc chắn làm giảm cơn đau.
PhantomJS cung cấp command line argument để bật webkit's remote debugger. AFAIK, PhantomJS khởi chạy máy chủ và đưa tập lệnh vào <head>
của trang web bằng trình gỡ lỗi trong trình duyệt quen thuộc. Nó thực sự khá tốt đẹp, với breakpoints, vv Tuy nhiên, chuyển sang đào thủ công xung quanh trong thiết bị đầu cuối cho một tham số dòng lệnh ngẫu nhiên và đường dẫn đến kịch bản của bạn là nghiêm trọng khó chịu.
Vì vậy, tôi đã sử dụng tính năng "công cụ bên ngoài" của IntelliJ để khởi chạy tập lệnh Bash làm chết bất kỳ phiên gỡ lỗi nào trước đó, khởi chạy PhantomJS và sau đó mở trang trong Chrome.
#!/bin/bash
lsof -i [email protected]:9000 #list anything bound to port 9000
if [ $? -eq 0 ] #if something was listed
then
killall 'phantomjs'
fi
/usr/local/Cellar/phantomjs/2.0.0/bin/phantomjs --remote-debugger-port=9000 $1 &
# --remote-debugger-autorun=yes <- use if you have added 'debugger;' break points
# replace $1 with full path if you don't pass it as a variable.
sleep 2; #give phantomJS time to get started
open -a /Applications/Google\ Chrome.app http://localhost:9000 & #linux has a different 'open' command
# alt URL if you want to skip the page listing
# http://localhost:9000/webkit/inspector/inspector.html?page=1
#see also
#github.com/ariya/phantomjs/wiki/Troubleshooting
Một vài dòng tiếp theo là cài đặt cho IntelliJ, mặc dù mã trên hoạt động tốt trên mọi nền tảng/IDE.
chương trình: $ProjectFileDir$/path/to/bash/script.sh
thông số: $FilePath$
dir làm việc: $ProjectFileDir$
- 1. Thiết lập: Đăng nhập không thành công, cách gỡ lỗi?
- 2. Bắt gỡ lỗi từ xa được thiết lập với PhantomJS
- 3. Thiết lập thanh công cụ gỡ lỗi Django
- 4. Gỡ lỗi thiết bị iPhone
- 5. Có thể thiết lập các điểm ngắt khi gỡ lỗi từ xa bằng Visual Studio không?
- 6. Làm thế nào để thiết lập Eclipse để gỡ lỗi C từ xa bằng gdbserver?
- 7. Làm cách nào để tôi có thể gỡ lỗi mã js bằng Cordova và ios simulator?
- 8. Gỡ lỗi từ xa bằng trình giả lập Android
- 9. Lập trình thiết lập thời gian chờ WCF ở chế độ gỡ lỗi
- 10. Trong Delphi 7, tôi có thể thiết lập chế độ 'Gỡ lỗi' và 'Phát hành' không?
- 11. Lập trình C: Gỡ lỗi với pthreads
- 12. Chế độ gỡ lỗi và gỡ lỗi trong IDE
- 13. Gỡ lỗi và lập hồ sơ nhân viên web
- 14. Gỡ lỗi mẫu ngay lập tức
- 15. Facebook có cung cấp cách tải JS gỡ lỗi không?
- 16. Gỡ lỗi thiết bị Android qua Bluetooth
- 17. Làm thế nào để gỡ lỗi từ xa Nút JS bằng PHPStorm?
- 18. Chấm dứt gỡ lỗi trên thiết bị
- 19. thiết lập MATLAB - dừng lại nếu lỗi
- 20. Galaxy Tab trên thiết bị gỡ lỗi?
- 21. Meteor JS, đang chạy trong trình gỡ lỗi?
- 22. Gỡ lỗi plugin jQuery và zclip
- 23. Gỡ lỗi iPhone thiết bị thực
- 24. Gỡ lỗi thiết bị Android qua Internet
- 25. cách gỡ lỗi bằng xUnit?
- 26. Tôi muốn gỡ lỗi (thiết lập một điểm ngắt trong) System.Web.Mvc.DefaultControllerFactory, là có thể?
- 27. Gỡ lỗi jQuery bằng Firebug
- 28. Java: gỡ lỗi bằng SwingUtilities.invokeLater()
- 29. Gỡ lỗi Node.js bằng Eclipse
- 30. Gỡ lỗi LLVM bằng Eclipse
Trong Chrome, đó là --remote-debugging-port, không phải --remrem-debugger-port. Đó cũng là lá cờ trong bài viết trên webkit. Bạn có thể muốn kiểm tra kỹ xem cờ có đúng không. –
Không, đó là [chắc chắn] (https://github.com/ariya/phantomjs/wiki/Troubleshooting#remote-debugging) '--remote-debugger-port = 9000' – Indolering
Trong khi câu trả lời này đã cho tôi rất nhiều điểm internet , Tôi muốn xem một giải pháp * REAL * cho điều này đôi khi và tôi sẽ rất vui khi trao giải đáp cho bất cứ ai có thể đăng nó! – Indolering