Node.js console.log () hiçbir şeyi günlüğe kaydetmiyor


92

Node.js'yi ilk kez denemek. Düğümü ayarlayın, örnek uygulamayı nodejs.org sitesinden ayarlayın. Sunucuyu iyi başlatabilir, ancak console.log()aslında hiçbir şey kaydetmiyor. Javascript konsolunu Chrome, Firefox ve Safari'de denedim - günlükte hiçbir şey görünmüyor. Ayrıca Mac'imdeki Konsol'u sadece tekmeler için kontrol ettim, orada hiçbir şey yoktu. Neyi kaçırıyorum?

(İşte çalışan ancak hiçbir şeyi kaydetmeyen örnek kod.)

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');

Bu uygulamayı nasıl çalıştırıyorsunuz? Hangi ortam? Yerel makinenizdeki konsolda ise, oradaki uygulamadan gelen günlükleri görmelisiniz. Barındırılan bir çözüm kullanıyorsanız, genellikle günlükleri bir web arayüzü ve komut satırı API araçları aracılığıyla görüntülemenin bir yolunu sağlarlar.
Treffynnon

Bunu makinemde kopyalayamıyorum. Bu gayet iyi çalışıyor. Hangi sürümü kullanıyorsunuz?
Sean Tepesi

3
console.log (), dizeleri terminal penceresine (uygulamanın çalıştırıldığı komut satırı arayüzü) yayar
Pastor Bones

konsoldaki çıktıyı fark etmeden sunucuyu nasıl başlattınız?
RobertPitt

3
Bu konuda ne kadar aptal hissettiğimi bilemezsin :).
chrismanderson

Yanıtlar:


158

Bir node.js sunucusunda console.log, tarayıcının konsol penceresine değil, terminal penceresine çıktı verir.

Sunucunuzu nasıl çalıştırıyorsunuz? Çıkışı başlattıktan hemen sonra görmelisiniz.


91
Yapabilseydim kendi soruma oy verirdim. Bu bağlantıyı kurmadığıma inanamıyorum.
chrismanderson

4
nodejs ile bakan herkes aynı şeyi bekler ... konsol çıktısı, terminalin yanı sıra tarayıcının konsolunda da oturum açmalıdır.
Brad Parks

14
@Brad Hayır olmamalı. Tüm düğüm programları web sunucusu değildir ve olsalar bile bir anlam ifade etmez.
david

4
@David - Anladığım kadarıyla ... Sunucu tarafı işlemlerinin asla doğrudan istemci günlüğüne giriş yapmayacağını biliyorum ... ama node.js javascript, bu da insanları bir dereceye kadar istemci tarafında düşündürüyor ... ve o zamandan beri günlüğe kaydetme yöntemi, istemci tarafı olan "console.log" ile tam olarak aynı ada sahip, bu durumda bazı insanların tarayıcı konsolunda oturum açabileceğini düşündüğünü düşünüyorum.
Brad Parks

@BradParks, @david Evet, kullanımıyla ilgili tarayıcı konsolunda da çıktı arıyordum console.log(), sonra bu Soru / Cevap'a ulaştım .
Sithu

9

Bu, nodejs'yi ilk kez kullanan herkes için kafa karıştırıcı olabilir. Düğüm konsolu çıktınızı tarayıcı konsoluna yönlendirmek aslında mümkündür. Github'da connect-browser-logger'a bir göz atın

GÜNCELLEME: Yan'ın da belirttiği gibi, connect-browser-logger feshedilmiş gibi görünüyor. NodeMonkey'i burada ayrıntılı olarak tavsiye ederim: Chrome konsoluna çıktı alın


Github proje artık yok
Yan

5
Ayrıca, bu muhtemelen yanlış yoldan gidiyor. Düğüm sunucusunu tarayıcı konsolunu etkinleştirmek için günlüğe kaydetmek sadece garip bir uygulamadır. Bunun gerçekten yararlı olacağı sıfır kez düşünebilirim. Dürüst olmak gerekirse, konsolda sunucudan istemciye giriş yapmaya çalışmak, yazılımın nasıl oluşturulması gerektiğinin anlaşılmaması gibi görünüyor. Anlamsız bir şekilde, endişeler kavramının temel bir ayrımı olduğunu söylemiyorum. Her ikisinin de javascript kullanıyor olması, aynı ÇEVRE oldukları anlamına gelmez. Orada çok önemli bir ayrım var.
dudewad

6

Modern --inspect'i düğüm ile kullanarak console.log yakalanır ve tarayıcıya aktarılır.

düğüm --inspect myApp.js

veya erken günlüğe kaydetmeyi yakalamak için --inspect-brk programı ilk modülün ilk satırında durdurmak için kullanılabilir ...

düğüm --inspect-brk myApp.js

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.