Node.js console.log () ничего не регистрирует

92

Впервые пробую node.js. Настройте узел, настройте пример приложения с сайта nodejs.org . Может нормально запустить сервер, но на console.log()самом деле ничего не регистрирует. Пробовал консоль Javascript в Chrome, Firefox и Safari - в журнале ничего не отображается. Также проверил консоль на моем Mac просто для удовольствия, там тоже ничего не было. Что мне не хватает?

(Вот пример кода, который работает, но ничего не регистрирует.)

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/');
Крисмандерсон
источник
Как у вас работает это приложение? Какая среда? Если он находится на консоли на вашем локальном компьютере, вы должны увидеть там журналы, поступающие из приложения. Если вы используете размещенное решение, они обычно предоставляют способ просмотра журналов через веб-интерфейс и через свой инструмент командной строки API.
Treffynnon 03
Я не могу воспроизвести это на своей машине. Это прекрасно работает. Какая у вас версия?
Шон Хилл
3
console.log () передает строки в окно терминала (интерфейс командной строки, в котором запускается приложение)
Пастор Боунс
как вы запустили сервер, не заметив вывода в консоли?
Роберт Питт 03
3
Вы даже не представляете, насколько я тупой по этому поводу :).
Крисмандерсон

Ответы:

158

На сервере node.js выводится console.logв окно терминала, а не в окно консоли браузера.

Как у вас работает ваш сервер? Вы должны увидеть результат сразу после его запуска.

Дэвид
источник
91
Я бы проголосовал против своего вопроса, если бы мог. Не могу поверить, что я не установил эту связь.
Крисмандерсон
4
все, кто смотрит на nodejs, ожидают того же ... вывод консоли должен записываться в консоль браузера, а также в терминал.
Брэд Паркс
14
@Brad Нет, не должно. Не все программы узлов являются веб-серверами, и даже если бы они были таковыми, это все равно не имело бы смысла.
Дэвид
4
@David - Я понимаю вашу точку зрения ... Я знаю, что обычно серверные материалы никогда не регистрируются напрямую в клиентском журнале ... но node.js - это javascript, что в некоторой степени заставляет людей думать о стороне клиента ... и поскольку метод ведения журнала имеет то же имя, что и на стороне клиента, "console.log", из чего следует, что некоторые люди могут подумать, что он может войти в консоль браузера.
Брэд Паркс
@BradParks, @david Да, я тоже искал вывод в консоли браузера по использованию console.log(), затем я добрался до этого вопроса / ответа .
Sithu
9

Это может сбить с толку любого, кто впервые использует nodejs. На самом деле можно передать вывод консоли узла в консоль браузера. Взгляните на connect-browser-logger на github

ОБНОВЛЕНИЕ: как указал Ян, connect-browser-logger, похоже, не функционирует. Я бы порекомендовал NodeMonkey, как подробно описано здесь: Вывод на консоль Chrome из Node.js

безатомный
источник
Проект github больше не существует
ян
5
Кроме того, это, вероятно, неправильный путь. Регистрация активности сервера узла в консоли браузера - просто странная практика. Я не могу вспомнить ни одного случая, когда это было бы действительно полезно. Честно говоря, попытка входа с сервера на клиент в консоли звучит как непонимание того, как должно быть создано программное обеспечение. Я не имею в виду что-то среднее, это просто базовая концепция разделения проблем. Тот факт, что они оба используют javascript, не означает, что они представляют собой одну и ту же СРЕДУ. Здесь есть очень важное различие.
dudewad
6

Используя modern --inspect с узлом, console.log захватывается и передается в браузер.

узел --inspect myApp.js

или для захвата ранней регистрации --inspect-brk можно использовать для остановки программы на первой строке первого модуля ...

узел --inspect-brk myApp.js

J Decker
источник