在单独加载时运行良好的组合javascript中,什么会导致错误?

在单独加载时运行良好的组合javascript中,什么会导致错误?,javascript,Javascript,我编写了一个服务器端实用程序,用于管理javascript页面依赖关系。在开发过程中,它将javascript作为单独的文件提供(按照定义的顺序嵌入单个脚本标记),在生产模式下,它读取文件,缩小文件(Google Closure在仅空白模式下),并通过单个脚本标记嵌入文件 目前,我已经关闭了缩小功能以消除该变量…所以它所做的只是将文件连接在一起,并在每个文件之间换行 当我进入生产模式时,我在许多嵌入的文件中遇到了虚假的问题 那么,有人知道我将一组文件作为一个单独的、连接的文件来提供可能会导致什么

我编写了一个服务器端实用程序,用于管理javascript页面依赖关系。在开发过程中,它将javascript作为单独的文件提供(按照定义的顺序嵌入单个脚本标记),在生产模式下,它读取文件,缩小文件(Google Closure在仅空白模式下),并通过单个脚本标记嵌入文件

目前,我已经关闭了缩小功能以消除该变量…所以它所做的只是将文件连接在一起,并在每个文件之间换行

当我进入生产模式时,我在许多嵌入的文件中遇到了虚假的问题

那么,有人知道我将一组文件作为一个单独的、连接的文件来提供可能会导致什么问题吗?我不知所措

对于那些需要更多细节的人:

我确信订单是正确的

本例中讨论的文件列表相当大,但包括jquery、angular、controllers、jquery dnd fileupload、controllers等

我在组合框的这一行得到“未捕获类型错误:未定义不是函数”:

(function(b){b.support.touch="ontouchend" in document;if(!b.support.touch){return;}var c=b.ui.mouse.prototype,e=c._mouseInit,a;function d(g,h){if(g.originalEvent.touches.length>1){return;}g.preventDefault();var i=g.originalEvent.changedTouches[0],f=document.createEvent("MouseEvents");f.initMouseEvent(h,true,true,window,1,i.screenX,i.screenY,i.clientX,i.clientY,false,false,false,false,0,null);g.target.dispatchEvent(f);}c._touchStart=function(g){var f=this;if(a||!f._mouseCapture(g.originalEvent.changedTouches[0])){return;}a=true;f._touchMoved=false;d(g,"mouseover");d(g,"mousemove");d(g,"mousedown");};c._touchMove=function(f){if(!a){return;}this._touchMoved=true;d(f,"mousemove");};c._touchEnd=function(f){if(!a){return;}d(f,"mouseup");d(f,"mouseout");if(!this._touchMoved){d(f,"click");}a=false;};c._mouseInit=function(){var f=this;f.element.bind("touchstart",b.proxy(f,"_touchStart")).bind("touchmove",b.proxy(f,"_touchMove")).bind("touchend",b.proxy(f,"_touchEnd"));e.call(f);};})(jQuery);
以下是生成全局变量的其他文件嵌入:

var FocusElementDirective = function() {
...
}
var DirectiveApplier = function(){
...
}
var AgeCalculator = function(){
...
}
另一个:当我在jquery fileupload的angular插件中触发一个“add”事件时,它给出了未捕获的TypeError:Object#没有方法“scope”。它所指向的行位于jquery fileupload angular模块内(9.0.5版的第89行):


发生在这里的第一件事就是它可能与全局变量有关,Crockford抱怨说这是javascript的一个弱点

有关快速说明:


就在我的头顶上。

所以,我找到了它,结果发现它非常简单……如此简单,以至于我花了几个小时的时间寻找技术:

我有一个副本

加载为标记时,浏览器只需加载一次文件。连接时,代码实际上是重复的。这导致了各种各样的奇怪(例如,事件处理程序被错误版本的事物所吸引)


来自编译语言背景,我有点期待一些重复的符号类型的通知…啊,动态语言。

是否可能以错误的顺序连接它们?您能否在遇到的众多问题中找出一个问题,并将重点放在该问题的原因上?请发布具体的错误消息您是否在任何文件中都有文件级严格模式?@Cuberto有严格的部分,但不在全局空间中。好主意,虽然…这是一个我没有想到检查。
        add: function (e, data) {
            if (e.isDefaultPrevented()) {
                return false;
            }
            var scope = data.scope(), // this line