Angular module().factory()不是concat之后的函数(gulp)

Max*_*ari 6 typeerror angularjs gulp gulp-concat

尝试在最近几个小时angular内使用concat/uglify我的应用程序gulp,我已经将整个过程简化为简单的concat,甚至将concat进程中的角度文件移除到<script>标题中的单独请求 - 但仍然,我收到相同的错误:

未捕获的TypeError:angular.module(...).factory(...)不是函数

没有concat一切都很好.

我的任务:

gulp.task('JS', function() {
  gulp.src(['!_dependencies/angular.min.js', '_dependencies/jquery.min.js', '_dependencies/moment.min.js', 'Alpha/_lilhelpers.js', 'Alpha/routes.js' , '!trainerreg.js', '**/*.js'], {cwd: './public/scripts'})         
    .pipe(concat('concat.js'))    
    .pipe(gulp.dest('./public/min'));
});
Run Code Online (Sandbox Code Playgroud)

看起来Error basicaly会.factory在代码中出现.

这是它目前因错误而停止的行 - 它是一个缩小的代码,但我不是迷你它,我现在只是简化文件,包括angular-animate.min这行代码(实际上是第一个).
如果我删除angular-animate它只会在另一个将要在路上的工厂抛出错误.

(function(N,f,W){'use strict';f.module("ngAnimate",["ng"]).directive("ngAnimateChildren",function(){return function(X,r,g){g=g.ngAnimateChildren;f.isString(g)&&0===g.length?r.data("$$ngAnimateChildren",!0):X.$watch(g,function(f){r.data("$$ngAnimateChildren",!!f)})}}).factory("$$animateReflow",["$$rAF","$document",function(f,r){var g=r[0].body;return function(r){return f(function(){r(g.offsetWidth)})}}]).config...
Run Code Online (Sandbox Code Playgroud)

更新:哦,我错了,一旦遇到它就不会破坏; 它一旦遇到.factory就会在仲裁文件的缩小部分中断...

很高兴听到任何解决方案/假设!

Max*_*ari 11

我找到了!
Chrome指向错误的行,Firefox帮了我一点.错误本身使我感到困惑,只是在一段时间之后我明白这angular.module(...).factory(...)意味着不是那个.factory未定义,而是试图调用由工厂值作为函数返回的东西,即.factory(...)()正在发生.今天我终于弄清楚原因是什么.在我的一个工厂之后,有一些第三方代码(在这种情况下有角度的动画)并且它像往常一样被包裹在封闭中,但问题是,我的工厂;最后没有这样,所以在我得到了concat之后:

.factory('fact', function(){my-factory-code}) (function(args){3rd-party-code})()
Run Code Online (Sandbox Code Playgroud)

由于工厂生产线没有以分号结束这一事实,因此将封闭包裹解释为函数调用.没有concat就没有出现这个问题,因为这个模块是在一个单独的文件中.

教训 - 不要忘记我们的同伴;;)