2016-05-12 18 views
13

Pamiętając o tym, że mam tylko najdokładniejsze zrozumienie tego, co debugger jest naprawdę, potrzebuję pomocy przy konfigurowaniu konfiguracji debugowania npm WebStorm dla aplikacji express.js."Odmowa połączenia" w konfiguracji debugowania WebStorm NPM

Oto ja tak far-- klikam debug z moich ustawień, jak myślę, że powinny one być (poniżej):

/Users/me/.nvm/versions/node/v4.4.1/bin/node --debug=8090  
/Users/me/.nvm/versions/node/v4.4.1/lib/node_modules/npm/bin/npm-cli.js run-script start 

To debug "start" script, make sure $NODE_DEBUG_OPTION string is specified as the first argument for node command you'd like to debug. 
For example: 
{ "start": "node $NODE_DEBUG_OPTION server.js" } 
Debugger listening on port 8090 
... 
It has begun. Port: 3000 

Więc w tym momencie, program rozpoczął się i reaguje na moje POST do localhost:3000 , ale nie łamie ustawionego punktu przerwania.

Patrząc w Debugger> Zmienne okienka, widzę Connecting to localhost:57617, to etykietka wyskakuje mówiąc: „Connection refused” i szyba mówi Frame is not available.

Nie rozumiem, skąd pochodzi ten numer portu 57617. Różni się, ale nie według żadnego wzoru, który dotąd odkryłem, z wyjątkiem tego, że zawsze jest inny niż ten ustawiony w opcji węzła --debug=X lub --debug-brk=X.

+1

57617 jest losowym portem, w którym nasłuchuje debugger węzła. To naprawdę nie ma znaczenia. Czy dodałeś $ NODE_DEBUG_OPTION do polecenia node w twoim package.json, jak jest napisane w wiadomości? Nie można debugować skryptów npm, chyba że ta zmienna istnieje - konieczne jest uruchomienie węzła spawnowanego przez npm w trybie debugowania – lena

+1

To wszystko. (Byłem, przyznaję, myliłem się z tym, ponieważ jakoś wyobrażałem sobie, że nie jest to literalna wartość ciągu, ale niektóre zmienne env lub niektóre takie). Jeśli odpowiesz na poniższe pytanie, przyjmuję twoją odpowiedź. – Ben

Odpowiedz

14

Komunikat o błędzie jest rzeczywiście bardzo niejasny. Musisz zmienić swój wpis na klawiaturze npm w package.json (niestety). Znaleziono wyraźny opis w tym poście: http://pavelpolyakov.com/2016/05/01/webstorm-npm-tasks-debug/

Wpis start powinna wyglądać następująco:

"scripts": { 
    "start": "node $NODE_DEBUG_OPTION ./node_modules/someModule/bin/someModule.js --arguments" 
} 

Można również przejść z dwoma wejściami, aby utrzymać pierwszy suchy. Chociaż nie jest to konieczne, ponieważ oba działają dobrze z linii poleceń. Więc po prostu dla kompletności boską:

"scripts": { 
    "start": "someModule --arguments", 
    "startDebug": "node $NODE_DEBUG_OPTION ./node_modules/someModule/bin/someModule.js --arguments" 
} 

nie znajdę tę metodę szczególnie czyste, imo to co debugger npm należy zrobić dla Ciebie, bez konieczności manipulowania kod źródłowy. Ale wydaje się, że jest to jedyna droga (na razie).

+0

Zgadzam się, że byłoby to niepożądane, ale udało mi się przekazać $ NODE_DEBUG_OPTION do skryptu z wiersza poleceń (npm run configuration), co było naprawdę wszystkim, co było potrzebne. Nie wymaga edycji źródła. – Ben

+0

Jak dokładnie to zrobiłeś? Czy możesz dokładnie określić, co umieścisz w "Argumentach". Nic, co próbowałem, nie było udane, muszę tu czegoś pomijać. –

+4

W oknie Konfiguracje uruchamiania/debugowania w Webstorm, możesz przekazać "$ NODE_DEBUG_OPTiON" do skryptu w polu Argumenty. (Powinien to być npm config) – Ben

3

Nigdy nie potrzebowałem tego w poprzednich wersjach Node lub Webstorm. Nie wiem, które zmiany wymagały teraz tej opcji.

Musiałem dodać go do package.json, jednak dodanie go do konfiguracji uruchamiania nie działa. Musiałem stworzyć osobny skrypt, ponieważ zepsuł się podczas uruchamiania dowolnego skryptu bez debugowania.

Oto mój package.json (Uwaga Okna zmienne style% VAR%, wykorzystanie $ VAR dla uniksowych systemów):

"scripts": { 
    "start": "node index.js", 
    "debug": "node %NODE_DEBUG_OPTION% index.js", 
}, 

Wtedy gdy chcę debugować używam konfigurację uruchamiania, który wywołuje opcja debugowania - ponieważ w systemie Windows przynajmniej węzeł bierze var dosłownie, gdy nie jest zastępowany.


Jeśli spróbujesz wprowadzić zmienną w Webstorm's (2016.3.3) Okno konfiguracji run:

Webstorm Run Configuration

Wynika to w tych rzeczywistych komend, które są niepoprawne:

jako argument skryptu:

"C:\...\runnerw.exe" "C:\...\node.exe" "C:\...\npm-cli.js" run start %NODE_DEBUG_OPTION%

jako opcja Węzeł:

"C:\...\runnerw.exe" "C:\...\node.exe" %NODE_DEBUG_OPTION% "C:\...\npm-cli.js" run start

Ale wydaje się, że opcje muszą zostać przekazane do NPM, a nie skrypt npm (poprzedni), a nie węzeł (drugi), i nie ma sposobu, aby to zrobić w oknie dialogowym, o ile wiem. Tak więc, dodając do komendy skryptu package.json.

+0

Uwaga: może to być istotne dla 2017.1.4: https://youtrack.jetbrains.com/issue/IDEA-149344 – Nick

+0

Wbrew wszystkiemu ... to umożliwiło debugowanie . : +1: – tiffon

Powiązane problemy