2012-11-30 36 views
11

Tôi muốn xác định xem mã js của tôi có đang chạy trên máy chủ nút hoặc trên máy khách hay không và lưu nó vào biến số isServer = true nếu nó đang chạy trên máy chủ. Làm thế nào tôi có thể làm điều đó? Có cách nào chỉ đơn giản là kiểm tra sự tồn tại của một tài sản mà chỉ có sẵn trên máy chủ và, nếu điều này là có thể, đó là lựa chọn tốt nhất?Cách kiểm tra xem mã js có đang chạy trên máy chủ nút hay trên máy khách

Cảm ơn bạn đã trợ giúp!

+3

'if (typeof window ===" undefined ") {/ * có thể trên máy chủ * /}' – nnnnnn

Trả lời

16

Bạn có thể sử dụng này:

function is_server() { 
    return ! (typeof window != 'undefined' && window.document); 
} 

Như đối tượng window.document toàn cầu chỉ xuất hiện trong bối cảnh trình duyệt.

+2

window.document có thể dễ dàng được tiêm. –

+0

Tham chiếuMỗi: cửa sổ không được xác định tại repl: 1: 4 tại REPLServer.self.eval (repl.js: 111: 21) tại Giao diện. (repl.js: 250: 12) tại Interface.EventEmitter.emit (events.js: 88: 17) tại Interface._onLine (readline.js: 199: 10) tại Interface._line (readline.js: 517: 8) tại Interface._ttyWrite (readline.js: 735: 14) tại ReadStream.onkeypress (readline.js: 98: 10) tại ReadStream.EventEmitter.emit (events.js: 115: 20) at emitKey (readline.js: 1057: 12) –

+0

Có vẻ như tôi không thể kiểm tra cửa sổ ở tất cả trên máy chủ ... Tôi biết rằng sự khác biệt giữa trình duyệt và máy chủ nút là cửa sổ so với toàn cầu. –

Các vấn đề liên quan