完全未更改的源代码中的错误
Error in completely unchanged source code
我正在恢复我大约 12 个月前作为实习生开始的 Angular 应用程序的工作。
以前没有我现在遇到的错误。现在,当我将存储库克隆到我的新计算机,甚至我最初开发该应用程序的旧计算机上时,我收到以下错误:
(intermediate value)(intermediate value)(...) is not a function
Failed to instantiate module app due to
Error: [$injector:modulerr]
Failed to instantiate module ngSanitize due to:
Module 'ngSanitize' is not available
bower.json
"dependencies": {
"angular": "~1.4.7",
"angular-bootstrap": "~0.14.3",
"angular-ui-router": "~0.2.15",
"bootstrap": "~3.3.5",
"checklist-model": "~0.6.0",
"font-awesome": "fontawesome#~4.4.0",
"ngSignaturePad": "*",
"signature_pad": "~1.5.1",
"angular-bootstrap-datetimepicker": "latest",
"moment": "~2.10.6",
"angular-sanitize": "~1.4.7",
"ui-select": "angular-ui-select#~0.13.2",
"angular-touch": "~1.4.7",
"angular-ui-grid": "~3.0.7",
"angular-spinner": "~0.8.0",
"angularPrint": "angular-print#~0.3.8",
"lodash": "~4.13.1"
},
"resolutions": {
"angular": "~1.4.7"
}
ngSanitize
模块包含在 gulpfile
中用于 js 依赖项并在 angular.module
中声明。
gulp.task('js-deps', function () {
gulp.src([
'./public/bower_components/moment/moment.js',
'./public/bower_components/jquery/dist/jquery.min.js',
'./public/bower_components/bootstrap/dist/js/bootstrap.js',
'./public/bower_components/lodash/dist/lodash.min.js',
'./public/bower_components/angular/angular.min.js',
'./public/bower_components/angular-ui-grid/ui-grid.min.js',
'./public/bower_components/angular-ui-router/release/angular-ui-router.min.js',
'./public/bower_components/checklist-model/checklist-model.js',
'./public/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js',
'./public/bower_components/signature_pad/signature_pad.js',
'./public/bower_components/ngSignaturePad/ngSignaturePad.min.js',
'./public/bower_components/angular-bootstrap-datetimepicker/src/js/datetimepicker.js',
'./public/bower_components/angular-sanitize/angular-sanitize.min.js',
'./public/bower_components/ui-select/dist/select.min.js',
'./public/bower_components/angular-touch/angular-touch.min.js',
'./public/bower_components/spin.js/spin.min.js',
'./public/bower_components/angular-spinner/angular-spinner.min.js',
'./public/bower_components/angularPrint/angularPrint.js'
])
.pipe(concat('deps.js'))
.pipe(gulp.dest('./build/js'));
angular-sanitize.min.js.map也包括
gulp.src([
'./public/bower_components/angular/angular.min.js.map',
'./public/bower_components/angular-sanitize/angular-sanitize.min.js.map',
'./public/bower_components/angular-touch/angular-touch.min.js.map'
])
.pipe(gulp.dest('./build/js'));
Angular模块
angular.module('app', [
'ui.grid',
'ui.router',
'ui.bootstrap',
'checklist-model',
'ngSignaturePad',
'ui.bootstrap.datetimepicker',
'ngSanitize',
'ui.select',
'ngTouch',
'angularSpinner',
'AngularPrint'
])
好消息是,我学到了很多关于使用 Docker 和 vagrant 文件等工具捕获我的环境的重要性的重要教训。
我正在思考我最初开发该应用程序时与现在的不同之处。
在我的旧计算机上,我已经更新了 npm
、nodejs
,并且可能但我不确定 gulp -g
和 bower -g
。
我认为 npm
或 nodejs
没有问题,因为问题不在于服务器或 npm 依赖项。我可以很好地启动服务器。该错误显示在浏览器控制台中。问题可能在于 gulp
如何构建代码包。
我试过安装其中每一个的旧版本,重新安装依赖项,然后重建代码,但都无济于事。
我可以看到 ngSanitize
的依赖代码包,但我不知道如果构建中有错误要查找什么。
我在哪里寻找解决这个问题的下一条线索?
感谢我的导师 Greg 帮助我解决了这个问题。
这个错误是模糊的,解决方案没有阐明为什么会发生这一切,但这里是:
ui.bootstrap.datetimepicker
失败后的一切。
angular.module('app', [
'ui.grid',
'ui.router',,
'ui.bootstrap',
'checklist-model',
'ngSignaturePad',
'ui.bootstrap.datetimepicker',
'ngSanitize',
'ui.select',
'ngTouch',
'angularSpinner',
'AngularPrint'
])
如果我注释掉ngSanitize
,那么ui.select
就会失败,依此类推。
如果我在 datetimepicker.js
文件的末尾添加一个分号,构建工作正常并且错误不再存在。一种解脱,但仍然令人沮丧。
对于遇到同样问题的其他人,以下是我修改 gulpfile
以添加所需的 ;
.
的方法
npm install --save gulp-insert
在 gulpfile
中需要 gulp-insert
在文件串联发生之前添加 .pipe(insert.append(';'))
var insert = require('gulp-insert');
...
...
'./public/bower_components/angular-spinner/angular-spinner.min.js',
'./public/bower_components/angularPrint/angularPrint.js'
])
.pipe(insert.append(';'))
.pipe(concat('deps.js'))
.pipe(gulp.dest('./build/js'));
我正在恢复我大约 12 个月前作为实习生开始的 Angular 应用程序的工作。 以前没有我现在遇到的错误。现在,当我将存储库克隆到我的新计算机,甚至我最初开发该应用程序的旧计算机上时,我收到以下错误:
(intermediate value)(intermediate value)(...) is not a function
Failed to instantiate module app due to
Error: [$injector:modulerr]
Failed to instantiate module ngSanitize due to:
Module 'ngSanitize' is not available
bower.json
"dependencies": {
"angular": "~1.4.7",
"angular-bootstrap": "~0.14.3",
"angular-ui-router": "~0.2.15",
"bootstrap": "~3.3.5",
"checklist-model": "~0.6.0",
"font-awesome": "fontawesome#~4.4.0",
"ngSignaturePad": "*",
"signature_pad": "~1.5.1",
"angular-bootstrap-datetimepicker": "latest",
"moment": "~2.10.6",
"angular-sanitize": "~1.4.7",
"ui-select": "angular-ui-select#~0.13.2",
"angular-touch": "~1.4.7",
"angular-ui-grid": "~3.0.7",
"angular-spinner": "~0.8.0",
"angularPrint": "angular-print#~0.3.8",
"lodash": "~4.13.1"
},
"resolutions": {
"angular": "~1.4.7"
}
ngSanitize
模块包含在 gulpfile
中用于 js 依赖项并在 angular.module
中声明。
gulp.task('js-deps', function () {
gulp.src([
'./public/bower_components/moment/moment.js',
'./public/bower_components/jquery/dist/jquery.min.js',
'./public/bower_components/bootstrap/dist/js/bootstrap.js',
'./public/bower_components/lodash/dist/lodash.min.js',
'./public/bower_components/angular/angular.min.js',
'./public/bower_components/angular-ui-grid/ui-grid.min.js',
'./public/bower_components/angular-ui-router/release/angular-ui-router.min.js',
'./public/bower_components/checklist-model/checklist-model.js',
'./public/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js',
'./public/bower_components/signature_pad/signature_pad.js',
'./public/bower_components/ngSignaturePad/ngSignaturePad.min.js',
'./public/bower_components/angular-bootstrap-datetimepicker/src/js/datetimepicker.js',
'./public/bower_components/angular-sanitize/angular-sanitize.min.js',
'./public/bower_components/ui-select/dist/select.min.js',
'./public/bower_components/angular-touch/angular-touch.min.js',
'./public/bower_components/spin.js/spin.min.js',
'./public/bower_components/angular-spinner/angular-spinner.min.js',
'./public/bower_components/angularPrint/angularPrint.js'
])
.pipe(concat('deps.js'))
.pipe(gulp.dest('./build/js'));
angular-sanitize.min.js.map也包括
gulp.src([
'./public/bower_components/angular/angular.min.js.map',
'./public/bower_components/angular-sanitize/angular-sanitize.min.js.map',
'./public/bower_components/angular-touch/angular-touch.min.js.map'
])
.pipe(gulp.dest('./build/js'));
Angular模块
angular.module('app', [
'ui.grid',
'ui.router',
'ui.bootstrap',
'checklist-model',
'ngSignaturePad',
'ui.bootstrap.datetimepicker',
'ngSanitize',
'ui.select',
'ngTouch',
'angularSpinner',
'AngularPrint'
])
好消息是,我学到了很多关于使用 Docker 和 vagrant 文件等工具捕获我的环境的重要性的重要教训。
我正在思考我最初开发该应用程序时与现在的不同之处。
在我的旧计算机上,我已经更新了 npm
、nodejs
,并且可能但我不确定 gulp -g
和 bower -g
。
我认为 npm
或 nodejs
没有问题,因为问题不在于服务器或 npm 依赖项。我可以很好地启动服务器。该错误显示在浏览器控制台中。问题可能在于 gulp
如何构建代码包。
我试过安装其中每一个的旧版本,重新安装依赖项,然后重建代码,但都无济于事。
我可以看到 ngSanitize
的依赖代码包,但我不知道如果构建中有错误要查找什么。
我在哪里寻找解决这个问题的下一条线索?
感谢我的导师 Greg 帮助我解决了这个问题。
这个错误是模糊的,解决方案没有阐明为什么会发生这一切,但这里是:
ui.bootstrap.datetimepicker
失败后的一切。
angular.module('app', [
'ui.grid',
'ui.router',,
'ui.bootstrap',
'checklist-model',
'ngSignaturePad',
'ui.bootstrap.datetimepicker',
'ngSanitize',
'ui.select',
'ngTouch',
'angularSpinner',
'AngularPrint'
])
如果我注释掉ngSanitize
,那么ui.select
就会失败,依此类推。
如果我在 datetimepicker.js
文件的末尾添加一个分号,构建工作正常并且错误不再存在。一种解脱,但仍然令人沮丧。
对于遇到同样问题的其他人,以下是我修改 gulpfile
以添加所需的 ;
.
npm install --save gulp-insert
在 gulpfile
中需要gulp-insert
在文件串联发生之前添加 .pipe(insert.append(';'))
var insert = require('gulp-insert');
...
...
'./public/bower_components/angular-spinner/angular-spinner.min.js',
'./public/bower_components/angularPrint/angularPrint.js'
])
.pipe(insert.append(';'))
.pipe(concat('deps.js'))
.pipe(gulp.dest('./build/js'));