我有一个庞大的JavaScript库,我用Google的闭包编译器压缩了它。
我已经将我的压缩代码包装在一个匿名函数中,这样我就不会发生名称冲突,它包含在这样的外部文件中
// My external JS file
(function(){
// Closure compiler compressed code
})();
但是由于这个原因,我的代码不断抛出Promise
未定义的错误。但奇怪的是它可以在主页的范围内使用。因此,如果我转到调用堆栈的最顶层并在控制台中键入Promise
,它会返回该功能。我已经检查过它在任何地方都没有被夸大。
我想不出任何可能导致它未定义的东西,我被卡住了。
匿名函数如何导致Promise
变量未定义?
我上传了一个屏幕投射here,展示了我的问题,屏幕播放软件正在运行时有点滞后。
编辑:Promise是当前版本的chrome
中的内置本机变量答案 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;
}