如何检测脚本是否在浏览器或Node.js中运行

How to detect if script is running in browser or in Node.js?

本文关键字:浏览器 Node js 运行 是否 何检测 检测 脚本      更新时间:2023-09-26

我有jasmine测试规范文件,我想使用node.js和浏览器运行它。如何检测脚本是否在节点中运行?

几个想法:

您可以检查窗口全局对象,如果它可用,则您处于浏览器中

if (typeof window === 'undefined')
// this is node

或者你可以检查流程对象,如果它可用,那么你就在节点中

if(typeof process === 'object')
// this is also node

有一个npm包正是为了这个目的,它可以在客户端和服务器端使用。

浏览器或节点

你可以像这个一样在你的代码中使用它

import { isBrowser, isNode } from 'browser-or-node';
if (isBrowser) {
  // do browser only stuff
}
if (isNode) {
  // do node.js only stuff
}

免责声明:我是此包的作者:)

检查exports变量,如下所示:

if (typeof exports === 'object') {
    // Node. Does not work with strict CommonJS, but
    // only CommonJS-like environments that support module.exports,
    // like Node.
    module.exports = { ... };
}