如何检查我的代码在NodeJs中运行?
我有一个JavaScript的devise是在NodeJS内部运行,否则它会中断(例如,它使用require()
)。 我想做一个运行时检查,它在NodeJS里面,否则产生一个明确的错误信息。
我已经看到了这个答案,解释了如何检查代码是否在浏览器中运行。 但是它不检查是否有NodeJS。
如何检查我的JavaScript在NodeJS中运行?
你可以做的一件事是检查process
对象是否被定义,以及process.argv
数组的第一个元素是否是节点。
就像是:
if(typeof process !== 'undefined' && process.argv[0] === "node") { // this is node }
更多信息在文档中 。
防弹解决scheme将检查全局window
对象。 在浏览器中,它存在,并且不能被删除。 在node.js中,它不存在,或者如果它(因为有人定义它),它可以被删除。 (在node.js中,全局对象被称为GLOBAL
,它可以被删除)
这样做的函数看起来像这样:
function is_it_nodejs() { if (typeof window === 'undefined') return true; var backup = window, window_can_be_deleted = delete window; window = backup; // Restoring from backup return window_can_be_deleted; }