Pertanyaan Meteor: Debug di sisi server


Apakah ada yang tahu metode yang bagus untuk mendebug kode sisi server? Saya mencoba mengaktifkan Node.js debug kemudian menggunakan node-inspektur tetapi tidak menunjukkan kode saya.

Saya akhirnya menggunakan console.log tetapi ini sangat tidak efisien.

Pembaruan: Saya menemukan prosedur berikut berfungsi di mesin Linux saya:

  1. Ketika Anda menjalankan Meteor, ia akan menelurkan dua proses

    proses1: / usr / lib / meteor / bin / node /usr/lib/meteor/app/meteor/meteor.js

    proses2: / usr / lib / meteor / bin / node /home/paul/codes/bbtest_code/bbtest02/.meteor/local/build/main.js --keepalive

  2. Anda perlu mengirim kill -s USR1 pada proses2

  3. Jalankan simpul-inspektur dan Anda dapat melihat kode server Anda

Pada percobaan pertama saya, saya mengubah baris terakhir pada skrip startup meteor di / usr / lib / meteor / bin / meteor ke

exec "$DEV_BUNDLE/bin/node" $NODE_DEBUG "$METEOR" "$@"

dan lari NODE_DEBUG=--debug meteor pada command prompt. Ini hanya menaruh --debug flag pada proses1 jadi saya hanya melihat file meteor di node-inspector dan tidak dapat menemukan kode saya.

Dapatkah seseorang memeriksa ini di mesin Windows dan Mac?


76
2018-06-14 14:11


asal


Jawaban:


Di Meteor 0.5.4 ini telah menjadi jauh lebih mudah:

Pertama jalankan perintah berikut dari terminal:

npm install -g node-inspector
node-inspector &
export NODE_OPTIONS='--debug-brk'
meteor

Lalu buka http://localhost:8080 di browser Anda untuk melihat konsol simpul-inspektur.

Memperbarui

Sejak Meteor 1.0 Anda bisa mengetik

meteor debug

yang pada dasarnya merupakan pintasan untuk perintah di atas, dan kemudian meluncurkan simpul inspektur di browser Anda seperti yang disebutkan.

Memperbarui

Di Meteor 1.0.2 konsol atau shell telah ditambahkan. Ini mungkin berguna untuk menghasilkan variabel dan menjalankan perintah di server:

meteor shell

85
2018-02-22 10:20



Aplikasi Meteor adalah aplikasi Node.js. Saat menjalankan aplikasi Meteor dengan meteor [run] perintah, Anda bisa konfigurasikan NODE_OPTIONS variabel lingkungan untuk memulai node dalam mode debug.

Contoh dari NODE_OPTIONS nilai variabel lingkungan:

  • --debug
  • --debug=47977 - tentukan port
  • --debug-brk - istirahat pada pernyataan pertama
  • --debug-brk=5858 - tentukan port dan putus pada pernyataan pertama

Jika kamu export NODE_OPTIONS=--debugsemuanya meteor perintah dijalankan dari shell yang sama akan mewarisi variabel lingkungan. Atau, Anda dapat mengaktifkan debug hanya untuk satu kali jalan, dengan NODE_OPTIONS="--debug=47977" meteor.

Untuk melakukan debug, jalankan node-inspector di shell yang berbeda, lalu pergi ke http://localhost:8080/debug?port=<the port you specified in NODE_OPTIONS>, terlepas dari apa node-inspector memberitahu Anda untuk lari.


15
2018-02-14 11:07



Untuk memulai node.js dalam mode debug, saya melakukannya dengan cara ini:

  1. buka /usr/lib/meteor/app/meteor/run.js
  2. sebelum

    nodeOptions.push(path.join(options.bundlePath, 'main.js')); 
    

    menambahkan

    nodeOptions.push('--debug');
    

Berikut adalah langkah-langkah praktis tambahan untuk Anda melampirkan debugger gerhana:

  1. gunakan '--debug-brk' daripada '--debug' di sini, karena lebih mudah bagi saya untuk melampirkan node.js menggunakan eclipse sebagai debugger.
  2. tambahkan 'debugger;' dalam kode tempat Anda ingin melakukan debug. (Saya lebih suka cara ini secara pribadi)
  3. jalankan meteor di konsol
  4. melampirkan ke node.js dalam gerhana (alat V8, lampirkan ke localhost: 5858)
  5. jalankan, tunggu debugger untuk dipukul

ketika Anda mulai meteor di folder aplikasi meteor Anda, Anda akan melihat bahwa "debugger mendengarkan pada port 5858"di konsol.


9
2017-07-29 13:15



Pada Meteor 1.0.3.1 (pembaruan untuk jawaban Sergey.Simonchik)

Mulai server Anda dengan meteor run --debug-port=<port-number>

Arahkan browser ke http://localhost:6222/debug?port=<port-number>

Dimana <port-number> adalah port yang Anda tentukan.

Dalam kode Anda, tambahkan a debugger; di mana Anda ingin mengatur titik istirahat Anda.

Tergantung dimana debugger; dipanggil, baik itu akan merusak jendela browser klien atau server Anda dengan inspektur terbuka.


9
2018-02-18 00:56



Saya suka mengatur breakpoint melalui GUI. Dengan cara ini saya tidak perlu mengingat untuk menghapus kode debug dari aplikasi saya.

Ini adalah bagaimana saya berhasil melakukannya di sisi server untuk aplikasi meteor lokal saya:

meteor debug

mulai aplikasi Anda dengan cara ini.

Buka Chrome ke alamat yang diberikan kepada Anda. Anda mungkin perlu menginstal https://github.com/node-inspector/node-inspector (Mungkin datang dibundel dengan Meteor sekarang? Tidak yakin)

Anda akan melihat beberapa kode meteor internal yang aneh (bukan kode aplikasi yang Anda tulis). Tekan putar untuk menjalankan kode. Kode ini hanya memulai server Anda untuk mendengarkan koneksi.

Hanya setelah Anda menekan tombol play, Anda akan melihat direktori baru dalam struktur folder debugger yang dipanggil "aplikasi". Di dalamnya ada file proyek meteor Anda. Atur breakpoint di sana satu garis yang Anda inginkan.

Buka alamat lokal aplikasi Anda. Ini akan menjalankan kode sisi server Anda dan Anda harus dapat mencapai breakpoint Anda!

Catatan: Anda harus membuka kembali inspektur dan menjalani proses ini lagi setiap kali aplikasi Anda dimulai ulang!


7
2017-11-02 16:11



Pada Meteor 1.0.2 mungkin cara terbaik untuk debugging sisi server secara langsung melalui shell built-in baru: dengan menjalankan server run meteor shell. Info lebih lanjut di sini: https://www.meteor.com/blog/2014/12/19/meteor-102-meteor-shell


6
2018-01-29 05:19



Saya tidak yakin mengapa itu tidak berhasil untuk Anda.
Saya bisa menggunakannya dengan mengikuti langkah-langkah di konsol (Mac).

$ ps  
$ kill -s USR1 *meteor_node_process_id*  
$ node-inspector &

Langkah-langkah di atas disebutkan https://github.com/dannycoates/node-inspector. Ini untuk memasang simpul-inspektur untuk menjalankan proses simpul.


5
2018-06-14 18:21