无法弄清楚为什么本机 Promise 变量未定义

Can't figure out why the native Promise variable is undefined

本文关键字:Promise 变量 未定义 本机 为什么 弄清楚      更新时间:2023-09-26

我有一个大型的JavaScript库,我用Google的闭包编译器压缩了它。

我已经将我的压缩代码包装在一个匿名函数中,这样我就不会得到名称冲突,它包含在这样的外部文件中

// My external JS file
(function(){
    // Closure compiler compressed code
})();

但正因为如此,我的代码不断抛出一个错误,Promise是未定义的。但奇怪的是,它在主页的范围内可用。因此,如果我转到调用堆栈的最顶部并在控制台中键入Promise,它会返回函数。我已经检查过它没有在任何地方被过度刺激。

我想不出任何其他可能导致它未定义的东西,我被困住了。

匿名函数如何导致Promise变量未定义?

在这里上传了一个截屏视频,演示了我的问题,在屏幕投射软件运行时有点滞后。

编辑:承诺是当前版本的chrome中的内置本机变量

原来发生了什么

是吊装。在我的代码中的某个地方,有一些类似的东西

// This condition was never being met as it contained code to check if I'm
// in a node.js environment.
if (thisConditionIsNotTrue){
    // But because there's no 'var' before Promise it's being hoisted and 
    // setting my global Promise variable to undefined. Even though if the
    // require statement was actually run it would throw an error as it
    // doesn't exist in the browser.
    Promise = require("node-promise").Sj;
}