在Angular应用程序中使用ES6模块化系统和工具链时,全局对象可能未定义。可以使用“globalThis”代替“global”对象解决这个问题。例如,可以使用如下代码替换所有出现的“global”:
// 替换前
const something = global.something;
// 替换后
const something = globalThis.something;
在一些旧版本的浏览器中,“globalThis”对象可能未定义。这种情况下,可以使用类似以下的代码来解决问题:
if (typeof globalThis === "undefined") {
if (typeof window !== "undefined") {
window.globalThis = window;
} else if (typeof self !== "undefined") {
self.globalThis = self;
} else {
throw new Error("Unable to locate global object");
}
}
在这段代码中,首先检查“globalThis”是否定义。如果未定义,则分别检查“window”和“self”对象,并将其中一个赋值给“globalThis”对象。如果两者都未定义,则抛出一个错误。