如何在节点包中访问 window

How to access window in a node package

如今,许多 npm/node 软件包不仅在 node.js 上使用,而且还在网络上使用 webpackrollup 等工具。

我正在创建一个我想在网络上使用的包。如何访问浏览器提供的全局 window 对象?

是否有一些包可以向我公开此对象?

在浏览器中 运行 时,全局变量 window 存在,您只需使用它即可。如果您是 运行 适当环境中的代码,则无需执行任何操作即可使其呈现或可用。如果 运行 node.js 中的代码,则 window 变量将不存在。

如果您的代码仅针对一种环境设计,那么通常仅由程序员尝试仅在适当的环境中使用它,您将记录它需要什么环境。

如果您想通知开发人员他们使用错误,您可以在顶层代码中执行以下操作:

if (typeof window !== "object" && typeof window.document !== "object") {
    // does not appear to be a browser environment
    throw new Error("This code is only meant to run in a browser environment");
}

开发人员可以通过在加载您的代码之前在全局环境中同时定义 windowwindow.document 或通过从您的代码中编辑此检查来绕过这些检查,但此时,他们反正都是靠自己。