1

我有一段 JavaScript 被设计为在 NodeJS 中运行,否则它会中断(例如,它使用require())。我想在运行时检查它是否在 NodeJS 中,否则会产生明确的错误消息。

我已经看到这个答案解释了如何检查代码是否在浏览器中运行。但是它不检查是否有 NodeJS。

如何检查我的 JavaScript 是否在 NodeJS 中运行?

4

2 回答 2

3

一个防弹解决方案将检查全局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;
}
于 2013-01-18T21:53:24.227 回答
2

您可以做的一件事是检查process对象是否已定义以及process.argv数组的第一个元素是否为节点。

就像是:

if(typeof process !== 'undefined' && process.argv[0] === "node") {
    // this is node
}

文档中的更多信息。

于 2013-01-18T11:44:05.810 回答