我有一段 JavaScript 被设计为在 NodeJS 中运行,否则它会中断(例如,它使用require()
)。我想在运行时检查它是否在 NodeJS 中,否则会产生明确的错误消息。
我已经看到这个答案解释了如何检查代码是否在浏览器中运行。但是它不检查是否有 NodeJS。
如何检查我的 JavaScript 是否在 NodeJS 中运行?
我有一段 JavaScript 被设计为在 NodeJS 中运行,否则它会中断(例如,它使用require()
)。我想在运行时检查它是否在 NodeJS 中,否则会产生明确的错误消息。
我已经看到这个答案解释了如何检查代码是否在浏览器中运行。但是它不检查是否有 NodeJS。
如何检查我的 JavaScript 是否在 NodeJS 中运行?
一个防弹解决方案将检查全局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;
}
您可以做的一件事是检查process
对象是否已定义以及process.argv
数组的第一个元素是否为节点。
就像是:
if(typeof process !== 'undefined' && process.argv[0] === "node") {
// this is node
}
文档中的更多信息。