我有一个Angular应用程序,如果我手动加载所有脚本,但是一旦我尝试使用gulp-concat使用单个bundle.js文件就失败了。
我在其余脚本之前从CDN加载AngularJS和jQuery,但我确实使用了来自本地文件的ngSanitize和ngRoute。正如我所说,当我单独加载它们时,一切都有效。
jQuery似乎有效(使用bundle.js脚本时,一些与jQuery相关的任务在网站上运行)。
我按此顺序收到2个控制台错误:
Uncaught TypeError: $(...).ready(...) is not a function
和Uncaught Error: [$injector:modulerr]
。
我检查了bundle.js文件中出现第一个错误的行,但是我甚至没有使用.ready()
,所以我有点困惑。
我已经尝试从CDN加载ngSantize和ngRoute模块,而不是在本地使用它们但是没有用。我已经在这里阅读了尝试使用角度资源,我试过,但没有任何运气。我还使用gulp-order来确保所有内容的加载顺序与我手动加载的顺序相同。
这是我的gulpfile.js:
var gulp = require('gulp');
var concat = require('gulp-concat');
var order = require("gulp-order");
gulp.task('scripts', function() {
return gulp.src('./js/**/*.js')
.pipe(order([
"main.js",
"others/*.js",
"controllers/*.js",
"modules/*.js",
"directives/*.js",
"filters/*.js"
]))
.pipe(concat('bundle.js'))
.pipe(gulp.dest('./js/'));
});
gulp.task('default', ['scripts']);
当我检查bundle.js文件时,一切看起来都在那里,并且顺序就像我手动加载它一样。
我还需要做些什么吗?
更新
我还尝试下载AngularJS和jQuery的最新缩小版本并将它们捆绑到我的bundle.js文件中,但是我遇到了同样的Uncaught Error: [$injector:modulerr]
错误。当我不将它们包含在bundle.js中而是在bundle.js之前调用它们时,结果相同。
答案 0 :(得分:0)
Gulp在配置中不影响字符串。 使状态和路由器提供程序成为示例中显示的字符串。
var myApp = angular.module('myApp', ['ui.router'])
// configuring our routes
myApp.config(['$stateProvider', '$urlRouterProvider',function($stateProvider, $urlRouterProvider) {
$stateProvider
// route to show our basic form in login page
.state('login', {
url: '/login',
templateUrl: 'views/login.html',
controller: 'LoginController'
})
}]);