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

2024-03-06

试图连接/丑化我的angular应用程序使用gulp在过去的几个小时里,我将整个过程简化为简单的 concat,甚至将角度文件从 concat 过程中删除到单独的<script>标头中的请求 - 但我仍然收到相同的错误:

未捕获的类型错误: 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'));
});

看来错误基本上一旦发生.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...

UPDATE:哦,我错了,它不是一遇到.factory就坏了;一旦遇到连接文件的缩小部分中的.factory,它就会中断...

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


我找到了!
Chrome 指向了错误的行,Firefox 帮了我一点忙。错误本身让我很困惑,直到一段时间后我才明白angular.module(...).factory(...)意思不是那样.factory是未定义的,而是试图调用工厂值作为函数返回的东西,即.factory(...)()正在发生。今天终于知道是什么原因了。 在我的一个工厂之后,有一些第 3 方代码(在本例中为角度动画),并且像往常一样将其包裹在封闭物中,但问题是,我的工厂没有;最后所以在 concat 之后我有:

.factory('fact', function(){my-factory-code}) (function(args){3rd-party-code})()

由于工厂行没有以分号终止,因此环绕闭包被解释为函数调用。如果没有 concat,这个问题就不会出现,因为这个模块位于一个单独的文件中。

教训——不要忘记我们的同胞; ;)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular module().factory() 不是 concat (gulp) 之后的函数 的相关文章

随机推荐