Apakah seseorang menggunakan node-inspector dengan Grunt untuk debugging aplikasi? Jika tidak, Dapatkah Anda merekomendasikan alat debugging untuk aplikasi berbasis Grunt?
Saya bekerja dengan nodejs untuk aplikasi sisi server dan saya memiliki Grunt untuk menggunakan tugas terpisah (ini karena pengguna dapat menjalankan tugas secara terpisah).
node-inspector
yang berbicara dengannode --debug
, memberikan info debug ke browser yang terhubung. Ini luar biasa, karena Anda kemudian dapat menghubungkan Chrome ke proses node-inspector, dan menggunakan semua alat web inspector untuk men-debug aplikasi Anda. github.com/dannycoates/node-inspectorJawaban:
Untuk menjalankan grunt di debug, Anda harus meneruskan skrip grunt ke node secara eksplisit:
dan beri
debugger;
garis dalam tugas Anda.node-inspector
kemudian akan membuka browser dengan alat debugging.Edit 28 Feb 2014
node-inspector
telah menambahkan perintahnode-debug
, yang meluncurkan node dalam--debug
keadaan dan membuka browser kenode-inspector
halaman, berhenti saat mencapaidebugger
baris pertama atau menyetel breakpoint.Edit 30 Januari 2015
Di Windows, segalanya menjadi lebih rumit. Lihat jawaban dari @ e.gluhotorenko untuk petunjuk.
sumber
$(which grunt)
itu? Apakah hanya Gruntfile.js yang ingin saya debug? Dantask
apakah saya menempatkan (menggunakanserve
sebagai contoh)grunt serve
atau hanyaserve
? Saya telah mencobanode-debug Gruntfile.js serve
dan banyak hal lain tetapi saya tidak bisa membuatnya bekerja. Node-inspector terbuka dan rusak di baris pertama, tetapi saya tidak dapat masuk keserve
tugas bahkan jika saya meletakkandebugger;
baris sebagai baris pertama fungsi.grunt.js
skrip grunt-cli . Itu adalah skrip yang menjalankan Grunt. Jika Anda menggunakan windows, lihat stackoverflow.com/a/13443026/240358 (jawaban di bawah ini) untuk kemungkinan lokasi skrip grunt-cli. Itu menggantikangrunt
dalam perintah Anda - dalam contoh Anda, gantitask
denganserve
Solusi Windows
Lari
dari cmd di direktori dengan Anda
Gruntfile.js
. Jangan lupa memberidebugger;
garis di tempat yang diperlukan.sumber
grunt-cli
paket:node --debug-brk [..]\node_modules\grunt-cli\bin\grunt
node --debug-brk (Resolve-Path ~\AppData\Roaming\npm\node_modules\grunt-cli\bin\grunt) taskname
node-inspector
Untuk men-debug, kita harus memodifikasi file grunt di bawah bin. Di mesin saya, grunt diinstal secara global, jadi saya pergi ke / usr / local / lib / node_modules / grunt / bin Saya membuka file dan memodifikasi:
#!/usr/bin/env node
Untuk
#!/usr/bin/env node --debug-brk
--debug-brk akan berhenti di baris pertama javascript yang dijalankan.
Melakukan itu saja tidak cukup, karena Anda tidak akan dapat menemukan file js task grunt di drop down di node inspector, jadi Anda harus memodifikasi file yang ingin Anda debug dengan menambahkan
debugger;
where. Anda ingin breakpoint terjadi. Sekarang Anda dapat mengklik lanjutkan setelah jeda pertama, dan Anda akan memutuskandebugger;
baris AndaCukup kotor, tapi itu satu-satunya cara yang saya temukan sejauh ini.
sumber
Saya baru-baru ini membuat grunt-node-inspector untuk dengan mudah mengkonfigurasi node-inspector dengan sisa alur kerja grunt Anda, lihat: https://github.com/ChrisWren/grunt-node-inspector
Berikut adalah bagian dari Gruntfile yang menggambarkan bagaimana Anda dapat men-debug tugas grunt menggunakan grunt-node-inspector, grunt-concurrent, dan grunt-shell: https://github.com/CabinJS/Cabin/blob/master/Gruntfile. js # L44-L77
sumber
node --debug-brk $(which grunt) node-inspector build test
semacam itu? Aku suka itu.node-inspector
tidak akan keluar dan mengizinkanbuild
dantest
berjalan karena berjalan selamanya. Saya menambahkan tautan ke cuplikan tempat saya menyiapkannya.node-inspector &
, meninggalkannya di latar belakang, dan menghentikannya. Ada pendapatmu tentang itu?grunt node-inspector
dan kemudian pergi ke url localhost dan saya tidak melihat file sumber. Hanya alat debugger kosong.grunt node-inspector
dannode --debug-brk Gruntfile.js
dari direktori grunt saya. Namun ketika saya mengatur breakpoint di file grunt itu hanya crash dengan kesalahan koneksi.Saya telah melakukan tugas untuk menjalankan aplikasi saya dan meluncurkan node-inspector. Ini jauh lebih baik daripada proposisi saat ini, Anda hanya perlu menambahkan tugas ini di gruntfile:
sumber
Jawaban bagus di sini. Di 2017, sekarang Anda bisa melakukannya
node --inspect --debug-brk $(which grunt) taskName
Yang mencetak sesuatu seperti.
To start debugging, open the following URL in Chrome: chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/232652c3-f63c-4b00-8de9-17dfad5db471
Buka URL itu di chrome, dan Anda siap melakukannya!
Saya menggunakan Node 7.3.0 dan saya menggunakan Mac. Anda mungkin harus mengikuti beberapa saran di posting lain untuk menjalankannya di Windows.
sumber
Pembaruan 2019
Jika Anda ingin meluncurkan tugas kasar dalam mode debug dan berhenti di baris pertama:
node --inspect-brk $(which grunt) taskName
Jika Anda ingin meluncurkan tugas grunt dalam mode debug di port tertentu:
node --inspect-brk=8080 $(which grunt) taskName
jika Anda ingin melampirkan VSCODE ke proses node yang menjalankan sesi debugging grunt, gunakan konfigurasi berikut di vscode:
sumber