उत्तर

6

PhantomJS एक remote-debugger-port विकल्प आपको क्रोम देव उपकरणों में अपने कैस्पर स्क्रिप्ट डिबग करने के लिए उपयोग कर सकते हैं। फिर,

casperjs test script.js --remote-debugger-port=9000

क्रोम में http://localhost:9000 खुल जाएगा और about:blank लिंक है कि में प्रस्तुत करता है पर क्लिक करें: इसका इस्तेमाल करने के लिए, बस अपने कैस्पर स्क्रिप्ट इस तर्क के साथ निष्पादित। आपको अपने आप को परिचित क्रोम देव उपकरण क्षेत्र में ढूंढना चाहिए।

इस के बाद से एक स्क्रिप्ट और नहीं एक वेब पेज है, ताकि डिबगिंग शुरू करने के लिए, आप दो चीजों से पहले अपनी स्क्रिप्ट निष्पादित करेंगे में से एक करना है:

  1. क्रोम देव उपकरण पृष्ठ में, खोलने कंसोल और __run() से निष्पादित करें वास्तव में अपनी स्क्रिप्ट शुरू करें।
  2. अपने कोड में debugger; लाइन डालें, और एक अतिरिक्त --remote-debugger-autorun=yes तर्क के साथ अपनी कैस्पर स्क्रिप्ट चलाएं। रिमोट डीबग पेज ओपन के साथ ऐसा करने से स्क्रिप्ट तब तक चल जाएगी जब तक कि यह आपके debugger; लाइन को हिट नहीं करेगी।

एक शानदार tutorial है जो यह सब बहुत अच्छी तरह से समझाता है।

15

मैंने इसे पूरी तरह से हल नहीं किया, लेकिन मैंने दर्द को निश्चित रूप से कम कर दिया।

फ़ैंटॉमजेएस webkit's remote debugger सक्षम करने के लिए command line argument प्रदान करता है। AFAIK, फैंटॉमजेएस ने एक सर्वर लॉन्च किया और स्क्रिप्ट को परिचित इन-ब्राउजर डीबगर के साथ वेबपृष्ठ के <head> में डंप कर दिया। ब्रेकपॉइंट्स इत्यादि के साथ यह वास्तव में बहुत अच्छा है। हालांकि, यादृच्छिक कमांड लाइन पैरामीटर के लिए टर्मिनल में मैन्युअल रूप से खुदाई करने के लिए स्विच करना और आपकी स्क्रिप्ट का पथ गंभीर रूप से परेशान है।

तो, मैंने एक बैच स्क्रिप्ट लॉन्च करने के लिए इंटेलिजे की "बाहरी टूल्स" सुविधा का उपयोग किया जो किसी भी पिछले डिबगिंग सत्र को मारता है, फ़ैंटॉमजेएस लॉन्च करता है, और उसके बाद पेज को क्रोम में खोलता है।

#!/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 

अगली कुछ पंक्तियां इंटेलिजे के लिए सेटिंग्स हैं, हालांकि उपर्युक्त कोड किसी प्लेटफॉर्म/आईडीई पर भी काम करता है।

कार्यक्रम: $ProjectFileDir$/path/to/bash/script.sh
पैरामीटर: $FilePath$
काम कर dir: $ProjectFileDir$

+0

क्रोम में यह --remote-debugging-port है, नहीं --remote-debugger-port। यह वेबकिट आलेख में भी ध्वज है। आप दोबारा जांचना चाहेंगे कि ध्वज सही है। –

+0

नहीं, यह [निश्चित रूप से] है (https://github.com/ariya/phantomjs/wiki/Troubleshooting#remote-debugging) '--remote-debugger-port = 9000' – Indolering

+3

जबकि इस उत्तर ने मुझे बहुत सारे इंटरनेट पॉइंट प्राप्त किए हैं , मैं इसे कभी * वास्तविक * समाधान देखना चाहता हूं और मुझे इसे पोस्ट करने वाले किसी भी व्यक्ति को जवाब देने में खुशी होगी! – Indolering

संबंधित मुद्दे