无法弄清楚原因Promise变量未定义的原因

时间:2015-03-16 09:23:48

标签: javascript

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

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

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

但是由于这个原因,我的代码不断抛出Promise未定义的错误。但奇怪的是它可以在主页的范围内使用。因此,如果我转到调用堆栈的最顶层并在控制台中键入Promise,它会返回该功能。我已经检查过它在任何地方都没有被夸大。

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

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

我上传了一个屏幕投射here,展示了我的问题,屏幕播放软件正在运行时有点滞后。

编辑:Promise是当前版本的chrome

中的内置本机变量

1 个答案:

答案 0 :(得分:0)

原来正在发生的事情是悬挂。在我的代码的某处,有一些东西沿着这些方向

// 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;
}