如何检查 js 代码是在 node 服务器上运行还是在客户端运行?

24
我想确定我的js代码是在节点服务器上运行还是在客户端上运行,并将其存储到变量isServer = true中。我该怎么做?是否有一种简单的方法可以检查仅在服务器上可用的属性的存在,如果可能的话,哪个选项最好?感谢您的帮助!

4
如果(typeof window === "undefined"),则表示当前代码可能在服务器上运行。 - nnnnnn
1个回答

36

你可以使用这个:

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

由于全局window.document对象只存在于浏览器上下文中。


3
window.document 可以很容易地被注入。 - Parv Sharma
@pbcoder 是的,出现了错误,我需要使用 typeof 来防止不良访问,请查看我的更新答案获取修复版本。 - Nelson
1
@ParvSharma,检查 if (this != window) //server 是否可以解决注入问题?因为在 Node 上 this 应该是 global,而在浏览器上应该是 window,对吗? - Pascal Bayer
1
process是什么情况?它只在Node.js中可用,在浏览器中是undefined - Ravi
在使用webpack的项目中,无法使用process,因为webpack定义了即使针对浏览器也不能使用。 - niceman
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接