Node.js console.log () không ghi lại bất cứ thứ gì


91

Dùng thử node.js lần đầu tiên. Thiết lập nút, thiết lập ứng dụng mẫu từ trang nodejs.org . Có thể khởi động máy chủ tốt, nhưng console.log()không thực sự ghi lại bất kỳ thứ gì. Đã thử bảng điều khiển Javascript trong Chrome, Firefox và Safari - không có gì xuất hiện trong nhật ký. Cũng đã kiểm tra Bảng điều khiển trên máy Mac của tôi chỉ để xem các cú đá, không có gì cả. Tôi đang thiếu gì?

(Đây là mã ví dụ hoạt động nhưng không ghi lại bất kỳ thứ gì.)

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/');

Bạn đang chạy ứng dụng này như thế nào? Môi trường nào? Nếu nó nằm trên bảng điều khiển trên máy cục bộ của bạn thì bạn sẽ thấy nhật ký đến từ ứng dụng ở đó. Nếu bạn đang sử dụng giải pháp lưu trữ thì họ thường cung cấp một số cách để xem nhật ký thông qua giao diện web và thông qua công cụ API dòng lệnh của họ.
— Treffynnon

Tôi không thể sao chép điều này trên máy tính của mình. Điều này hoạt động tốt. Phiên bản nào bạn đang chạy?
— Sean Hill

3
console.log () phát ra các dây vào cửa sổ terminal (giao diện dòng lệnh nơi ứng dụng là ran)
— Pastor Bones

Làm thế nào bạn khởi động máy chủ mà không nhận thấy đầu ra trong bảng điều khiển?
— RobertPitt

3
Bạn không biết tôi cảm thấy ngớ ngẩn như thế nào về điều này :).
— chrismanderson

Câu trả lời:


158

Trong máy chủ node.js console.logxuất ra cửa sổ đầu cuối, không phải cửa sổ giao diện điều khiển của trình duyệt.

Bạn đang chạy máy chủ của mình như thế nào? Bạn sẽ thấy đầu ra trực tiếp sau khi bắt đầu.


91
Tôi sẽ bỏ phiếu cho câu hỏi của riêng tôi nếu tôi có thể. Không thể tin rằng tôi đã không thực hiện kết nối này.
— chrismanderson

4
tất cả mọi người nhìn chằm chằm vào nodejs đều mong đợi điều tương tự ... đầu ra của bảng điều khiển phải đăng nhập vào bảng điều khiển của trình duyệt, cũng như thiết bị đầu cuối.
— Brad Parks

14
@Brad Không, không nên. Không phải tất cả các chương trình nút đều là máy chủ web và ngay cả khi chúng là máy chủ thì nó vẫn không có ý nghĩa.
— david

4
@David - Tôi hiểu ý bạn ... Tôi biết rằng thông thường nội dung phía máy chủ sẽ không bao giờ đăng nhập trực tiếp vào nhật ký máy khách ... nhưng node.js là javascript, khiến mọi người nghĩ rằng phía máy khách, ở một mức độ nào đó ... và kể từ đó phương thức ghi nhật ký có tên chính xác giống với tên phía máy khách, "console.log", sau đó tôi nghĩ rằng một số người sẽ nghĩ rằng nó có thể đăng nhập vào bảng điều khiển của trình duyệt.
— Brad Parks

@BradParks, @david Có, tôi cũng đang tìm kiếm kết quả trong bảng điều khiển trình duyệt về việc sử dụng console.log(), sau đó tôi đã đạt đến Câu hỏi / A này.
— Sithu

9

Điều này có thể gây nhầm lẫn cho bất kỳ ai sử dụng nodejs lần đầu tiên. Thực sự có thể chuyển đầu ra bảng điều khiển nút của bạn đến bảng điều khiển trình duyệt. Hãy xem kết nối-browser-logger trên github

CẬP NHẬT: Như Yan đã chỉ ra, trình ghi nhật ký trình duyệt kết nối dường như không còn tồn tại. Tôi muốn giới thiệu NodeMonkey như chi tiết ở đây: Xuất ra bảng điều khiển Chrome từ Node.js


Dự án github không tồn tại nữa
— yan

5
Ngoài ra, điều này có thể đang đi sai đường. Ghi nhật ký máy chủ nút kích hoạt bảng điều khiển trình duyệt chỉ là một thực tế kỳ lạ. Tôi không thể nghĩ ra lần nào mà điều này thực sự hữu ích. Thành thật mà nói, cố gắng đăng nhập từ máy chủ đến máy khách trong bảng điều khiển có vẻ như thiếu hiểu biết về cách phần mềm nên được xây dựng. Tôi không có ý nói điều đó một cách ác ý, nó chỉ là một sự tách biệt cơ bản của khái niệm mối quan tâm. Chỉ vì cả hai đều sử dụng javascript không có nghĩa là chúng giống nhau một MÔI TRƯỜNG. Có một sự khác biệt rất quan trọng ở đó.
— dudewad

6

Sử dụng --inspect hiện đại với nút, console.log được ghi lại và chuyển tiếp đến trình duyệt.

node --inspect myApp.js

hoặc để ghi nhật ký sớm --inspect-brk có thể được sử dụng để dừng chương trình trên dòng đầu tiên của mô-đun đầu tiên ...

node --inspect-brk myApp.js

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.