Javascript 如何检查我的代码是否在NodeJs中运行?

Javascript 如何检查我的代码是否在NodeJs中运行?,javascript,node.js,Javascript,Node.js,我有一段JavaScript,设计用于在NodeJS中运行,否则它会中断,例如,它使用require。我想在运行时检查它是否在NodeJS中,否则会生成一条清晰的错误消息 我已经看到了如何检查代码是否在浏览器中运行的说明。但是它不会检查是否有NodeJS 如何检查JavaScript是否在NodeJS中运行?您可以检查process对象是否已定义,process.argv数组的第一个元素是否为node 比如: if(typeof process !== 'undefined' &&

我有一段JavaScript,设计用于在NodeJS中运行,否则它会中断,例如,它使用require。我想在运行时检查它是否在NodeJS中,否则会生成一条清晰的错误消息

我已经看到了如何检查代码是否在浏览器中运行的说明。但是它不会检查是否有NodeJS


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

您可以检查process对象是否已定义,process.argv数组的第一个元素是否为node

比如:

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

更多信息。

您可以检查流程对象是否已定义,process.argv数组的第一个元素是否为node

比如:

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

更多信息。

防弹解决方案将检查全局窗口对象。在浏览器中,它存在,并且无法删除。在node.js中,它不存在,或者如果因为有人定义了它而存在,则可以将其删除。在node.js中,全局对象称为全局对象,可以将其删除

这样做的函数如下所示:

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;
}

防弹解决方案将检查全局窗口对象。在浏览器中,它存在,并且无法删除。在node.js中,它不存在,或者如果因为有人定义了它而存在,则可以将其删除。在node.js中,全局对象称为全局对象,可以将其删除

这样做的函数如下所示:

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;
}

您是否将代码设计为在多个环境中运行?如果不是,那么肯定没有必要检查环境是否正确。。。用户有责任检查它适用于哪个环境。@Nathan MacInnes:好吧,在现实生活中,用户可以在任何地方运行代码,然后给我们发电子邮件,问我们为什么他们会有大量奇怪的错误。这恰好与您设计的代码在多个环境中运行是一样的吗?如果不是,那么肯定没有必要检查环境是否正确。。。用户有责任检查它是用于哪个环境的。@Nathan MacInnes:好吧,在现实生活中,用户可以在任何地方运行代码,然后给我们发电子邮件,问我们为什么他们有大量奇怪的错误。这恰好是