如何检查我的代码在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; }