【问题标题】:How to check if js code is running on node server or on the client如何检查 js 代码是在节点服务器上还是在客户端上运行
【发布时间】:2012-11-18 14:52:33
【问题描述】:

我想判断我的js代码是运行在节点服务器上还是客户端上,如果是运行在服务器上的话,把它存入一个变量isServer = true。我怎样才能做到这一点?有没有办法简单地检查是否存在仅在服务器上可用的属性,如果可能的话,这是最好的选择吗?

感谢您的帮助!

【问题讨论】:

  • if (typeof window === "undefined") { /* probably on server */ }

标签: javascript node.js


【解决方案1】:

你可以用这个:

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

因为全局 window.document 对象仅存在于浏览器上下文中。

【讨论】:

  • window.document 可以轻松注入。
  • ReferenceError: window is not defined at repl:1:4 at REPLServer.self.eval (repl.js:111:21) at Interface. (repl.js:250:12)在 Interface.EventEmitter.emit (events.js:88:17) 在 Interface._onLine (readline.js:199:10) 在 Interface._line (readline.js:517:8) 在 Interface._ttyWrite (readline.js: 735:14) 在 ReadStream.onkeypress (readline.js:98:10) 在 ReadStream.EventEmitter.emit (events.js:115:20) 在 emitKey (readline.js:1057:12)
  • 好像我根本无法在服务器上检查窗口...我知道浏览器和节点服务器之间的区别是窗口与全局。
  • @ParvSharma 检查if (this != window) //server 是否解决了注入问题?因为this 在节点上应该是global 而在浏览器上应该是window 对吧?
  • process 怎么样。它仅在 nodejs 和浏览器中的 undefined 中可用。
猜你喜欢
  • 2019-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-29
  • 1970-01-01
  • 2021-10-02
相关资源
最近更新 更多