2017-02-21 13 views
5

के साथ डॉकर में रिमोट डीबगिंग नोडजेएस मैं अपने ऐप के लिए आधिकारिक node डॉकर छवि का उपयोग करना चाहता हूं। हालांकि मैं मेजबान मशीन पर काम करने के लिए रिमोट डीबगर नहीं प्राप्त कर सकता। मैं रिमोट डीबगर से कनेक्ट करने के लिए विजुअल स्टूडियो कोड का उपयोग कर रहा हूं।विजुअल स्टूडियो कोड

अजीब चीज एक अनौपचारिक छवि cusspvz/node का उपयोग कर रही है, रिमोट डीबगर सही तरीके से काम करता है।

जब मैं कंटेनर मैं निम्नलिखित आउटपुट प्राप्त की cusspvz/node उदाहरण के खिलाफ docker log चलाएँ: जब मैं कंटेनर के node उदाहरण के खिलाफ docker log चलाने

Debugger listening on [::]:5858

हालांकि मैं:

Debugger listening on 127.0.0.1:5858

जो मुझे विश्वास दिलाता है कि डीबगर गलत आईपी पर सुन रहा है ddress (localhost की बजाय वाइल्डकार्ड होना चाहिए?)

मैंने डीबगर के साथ-साथ नोडमोन में निर्मित करने की कोशिश की है। दुर्भाग्य से मुझे काम करने में विफल होने के कारण नोड-इंस्पेक्टर नहीं मिल सका (ऐसा लगता है कि निर्माण वैसे भी विफल रहा है)।

यहाँ मेरी Dockerfile है:

FROM node 
WORKDIR /scraper 
EXPOSE 5858 
ENTRYPOINT ["/bin/bash", "-c", "if [ -z \"$REMOTE_DEBUGGING\" ]; then node --debug index.js; else node --debug-brk index.js; fi"] 
COPY . /scraper 
RUN npm install 

मैं डोकर-लिखें सुविधा के साथ कंटेनर शुरू कर रहा हूँ, इस YML फ़ाइल का उपयोग:

version: '2' 

services: 
alt.nphotos.imagescraper: 
    container_name: nscraper 
    hostname: nscraper 
    build: 
    context: ./ALT.NPhotos.ImageScraper 
    dockerfile: Dockerfile.debug 
    environment: 
    - REMOTE_DEBUGGING=1 
    - AMQP_CONNECTIONSTRING=amqp://guest:[email protected] 
    ports: 
    - "5858:5858" 

कोई भी विचार? - टीआईए!

+0

पूरा पक्ष टिप्पणी सवाल: आप के साथ एक संस्करण संख्या टैग निर्दिष्ट करना चाहिए अपने ' निर्देश से। 'नोड से: 6.9.5' उदाहरण के लिए ... अन्यथा, हर बार जब आप अपनी छवि बनाते हैं, तो आप नवीनतम/नवीनतम नोड संस्करण के साथ समाप्त हो जाएंगे। यह पहली बार अच्छा लगता है, जब तक कि एक अवांछित अपग्रेड आपके कोड को तोड़ देता है –

+0

धन्यवाद @ डेरिकबैली मैं इसे ध्यान में रखूंगा –

+0

क्या आपने यह कोशिश की है: http://stackoverflow.com/questions/12440169/how-do-you-debug- ए-नोड-जेएस-सर्वर-रनिंग-क्रोम-वेबकिट-ए-द-रिमोट-डीबग –

उत्तर

4

डिफ़ॉल्ट रूप से node.js (और इसके पीछे v8) डीबगर के लिए हमेशा 127.0.0.1 का उपयोग करें। मैंने cusspvz/node पर देखा है और मुझे कहीं भी नहीं मिल रहा है कि यह इस तरह डीबगर का खुलासा कैसे करता है।

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

node --debug=[::]:5858 test.js 
Debugger listening on [::]:5858 
+1

अरे, यह काम करता है! मैंने वास्तव में कुछ ऐसा ही करने की कोशिश की - डीबग-ब्रैक के साथ और मैं इसे काम नहीं कर सका, इसलिए मुझे लगता है कि यह विधि या तो काम नहीं करेगी। मैंने यही देखा, कोई विचार? 'डीबगर सुनना [::]: 5858 मॉड्यूल.जेएस: 563 डीबग.सेटब्रैकपॉइंट (संकलितवापर, 0, 0); ^ अवैध पहुंच ' हालांकि, जैसा कि आपने मुझे बचाया है - मैं बक्षीस का पुरस्कार दूंगा :) धन्यवाद बहुत। –

+0

@AdrianLucaThomas, मेरे पास डीबग-ब्रैक के लिए एक ही त्रुटि है। '[::]' के बजाय '0.0.0.0' का उपयोग करते समय भी। यदि यह आपके लिए महत्वपूर्ण है, तो आप अभी भी पोर्ट को रीडायरेक्ट करने के लिए 'socat' का उपयोग कर सकते हैं। यह एक कामकाज है जिसे मैंने पहले इस्तेमाल किया था। –

+0

@AdrianLucaThomas, क्या यह आपके लिए काम करता है यदि आप दोनों को गठबंधन करते हैं? 'नोड --debug = [::]: 5858 --debug-brk test.js'?मैं इस तरह पहली पंक्ति पर तोड़ने में सक्षम हूँ। –

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