2012-11-30 17 views
11

Voglio determinare se il mio codice js è in esecuzione sul server nodo o sul client e lo memorizzo in una variabile isServer = true se è in esecuzione sul server. Come lo posso fare? C'è un modo per verificare semplicemente l'esistenza di una proprietà che è disponibile solo sul server e, se è possibile, quale è l'opzione migliore?Come verificare se il codice js è in esecuzione sul server nodo o sul client

Grazie per l'aiuto!

+3

'if (typeof window ===" undefined ") {/ * probabilmente sul server * /}' – nnnnnn

risposta

16

Si potrebbe usare questo:

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

Come il window.document oggetto globale è presente solo nel contesto del browser.

+2

window.document può essere facilmente iniettato. –

+0

RiferimentoErrore: finestra non definita a repl: 1: 4 a REPLServer.self.eval (repl.js: 111: 21) all'interfaccia. (repl.js: 250: 12) in Interface.EventEmitter.emit (events.js: 88: 17) in Interface._onLine (readline.js: 199: 10) in Interface._line (readline.js: 517: 8) in Interface._ttyWrite (readline.js: 735: 14) in ReadStream.onkeypress (readline.js: 98: 10) in ReadStream.EventEmitter.emit (events.js: 115: 20) in emitKey (readline.js: 1057: 12) –

+0

Sembra che non riesca a controllare affatto la finestra sul server ... So che la differenza tra browser e server del nodo è la finestra rispetto al globale. –

Problemi correlati