我正在自学node.js,我已经拿到了热毛巾模板并开始扩展它的功能。我添加了一个新的Controller,它实现了angular-file-upload。它工作得很好,直到我尝试对新模块实现Karma测试,然后抛出这个错误
Chrome 46.0.2490 (Mac OS X 10.11.1) UploadController "before each" hook for "should be created successfully" FAILED
Error: [$injector:unpr] Unknown provider: routerHelperProvider <- routerHelper
http://errors.angularjs.org/1.4.7/$injector/unpr?p0=routerHelperProvider%20%3C-%20routerHelper
at /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:68:12
at /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4289:19
at Object.getService [as get] (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4437:39)
at /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4294:45
at getService (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4437:39)
at Object.invoke (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4469:13)
at /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4299:79
at forEach (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:336:20)
at Object.createInjector [as injector] (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4299:3)
at Context.workFn (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular-mocks/angular-mocks.js:2427:52)
Chrome 46.0.2490 (Mac OS X 10.11.1) UploadController "after each" hook: workFn for "should be created successfully" FAILED
Error: [$injector:unpr] Unknown provider: routerHelperProvider <- routerHelper
http://errors.angularjs.org/1.4.7/$injector/unpr?p0=routerHelperProvider%20%3C-%20routerHelper
at /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:68:12
at /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4289:19
at Object.getService [as get] (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4437:39)
at /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4294:45
at getService (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4437:39)
at Object.invoke (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4469:13)
at /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4299:79
at forEach (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:336:20)
at Object.createInjector [as injector] (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4299:3)
at Context.workFn (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular-mocks/angular-mocks.js:2427:52)
Chrome 46.0.2490 (Mac OS X 10.11.1) upload routes state "before each" hook for "should map state upload to url /upload " FAILED
Error: [$injector:unpr] Unknown provider: routerHelperProvider <- routerHelper
http://errors.angularjs.org/1.4.7/$injector/unpr?p0=routerHelperProvider%20%3C-%20routerHelper
at /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:68:12
at /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4289:19
at Object.getService [as get] (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4437:39)
at /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4294:45
at getService (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4437:39)
at Object.invoke (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4469:13)
at /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4299:79
at forEach (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:336:20)
at Object.createInjector [as injector] (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular/angular.js:4299:3)
at Context.workFn (/Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular-mocks/angular-mocks.js:2427:52)
Chrome 46.0.2490 (Mac OS X 10.11.1): Executed 42 of 45 (3 FAILED) (0.371 secs / 0.053 secs)上传控制器看起来像:-
(function () {
'use strict';
angular
.module('app.upload',['angularFileUpload'])
.controller('UploadController', UploadController);
UploadController.$inject = ['logger','FileUploader','$scope'];
/* @ngInject */
function UploadController(logger, FileUploader, scope) {
var vm = this;
vm.title = 'Upload';
var uploader = scope.uploader = new FileUploader({
url: '/upload'
});
activate();
function activate() {
logger.info('Activated Upload View');
}
// FILTERS
uploader.filters.push({
name: 'customFilter',
fn: function(item /*{File|FileLikeObject}*/, options) {
return this.queue.length < 10;
}
});
// CALLBACKS
uploader.onWhenAddingFileFailed = function(item /*{File|FileLikeObject}*/, filter, options) {
console.info('onWhenAddingFileFailed', item, filter, options);
};
uploader.onAfterAddingFile = function(fileItem) {
console.info('onAfterAddingFile', fileItem);
};
uploader.onAfterAddingAll = function(addedFileItems) {
console.info('onAfterAddingAll', addedFileItems);
};
uploader.onBeforeUploadItem = function(item) {
console.info('onBeforeUploadItem', item);
};
uploader.onProgressItem = function(fileItem, progress) {
console.info('onProgressItem', fileItem, progress);
};
uploader.onProgressAll = function(progress) {
console.info('onProgressAll', progress);
};
uploader.onSuccessItem = function(fileItem, response, status, headers) {
console.info('onSuccessItem', fileItem, response, status, headers);
};
uploader.onErrorItem = function(fileItem, response, status, headers) {
console.info('onErrorItem', fileItem, response, status, headers);
};
uploader.onCancelItem = function(fileItem, response, status, headers) {
console.info('onCancelItem', fileItem, response, status, headers);
};
uploader.onCompleteItem = function(fileItem, response, status, headers) {
console.info('onCompleteItem', fileItem, response, status, headers);
};
uploader.onCompleteAll = function() {
console.info('onCompleteAll');
};
console.info('uploader', uploader);
}
})();upload-routes.js如下所示:
(function() {
'use strict';
angular
.module('app.upload')
.run(appRun);
appRun.$inject = ['routerHelper'];
/* @ngInject */
function appRun(routerHelper) {
routerHelper.configureStates(getStates());
}
function getStates() {
return [
{
state: 'upload',
config: {
url: '/upload',
templateUrl: 'app/upload/upload.html',
controller: 'UploadController',
controllerAs: 'vm',
title: 'Upload',
settings: {
nav: 3,
content: '<i class="fa fa-lock"></i> Upload'
}
}
}
];
}
})();测试规范看起来像这样:
/* jshint -W117, -W030 */
describe('UploadController', function() {
var controller;
beforeEach(function() {
bard.appModule('app.upload');
bard.inject('$controller', '$log', '$rootScope');
});
beforeEach(function () {
controller = $controller('UploadController');
$rootScope.$apply();
});
bard.verifyNoOutstandingHttpRequests();
describe('Upload controller', function() {
it('should be created successfully', function () {
expect(controller).to.be.defined;
});
describe('after activate', function() {
it('should have title of Upload', function() {
expect(controller.title).to.equal('Upload');
});
it('should have logged "Activated"', function() {
expect($log.info.logs).to.match(/Activated/);
});
});
});
});我发现了一个链接,该链接指示当未加载所有必需的依赖项时会发生此错误。构建是由gulp精心编排的。gulp.js和gulp.config文件看起来没有问题,浏览器中加载了正确的资源。
当我在SingleRun模式= False下运行gulp并生成一个Chrome实例时,我在console.log中得到以下信息:-
15 11 2015 23:21:37.527:WARN [proxy]: failed to proxy /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map (connect ECONNREFUSED 127.0.0.1:8888)
15 11 2015 23:21:37.528:DEBUG [middlware:source-files]: Requesting /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map /
15 11 2015 23:21:37.528:DEBUG [middlware:source-files]: Fetching /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map
15 11 2015 23:21:37.529:DEBUG [proxy]: proxying request - /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map to localhost:8888
15 11 2015 23:21:37.531:WARN [proxy]: failed to proxy /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map (connect ECONNREFUSED 127.0.0.1:8888)
15 11 2015 23:21:37.532:DEBUG [middlware:source-files]: Requesting /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map /
15 11 2015 23:21:37.532:DEBUG [middlware:source-files]: Fetching /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map
15 11 2015 23:21:37.532:DEBUG [proxy]: proxying request - /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map to localhost:8888
15 11 2015 23:21:37.533:WARN [proxy]: failed to proxy /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map (connect ECONNREFUSED 127.0.0.1:8888)
15 11 2015 23:21:37.534:DEBUG [middlware:source-files]: Requesting /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map /
15 11 2015 23:21:37.534:DEBUG [middlware:source-files]: Fetching /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map
15 11 2015 23:21:37.534:DEBUG [proxy]: proxying request - /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map to localhost:8888
15 11 2015 23:21:37.535:WARN [proxy]: failed to proxy /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map (connect ECONNREFUSED 127.0.0.1:8888)
15 11 2015 23:21:37.536:DEBUG [middlware:source-files]: Requesting /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map /
15 11 2015 23:21:37.546:DEBUG [middlware:source-files]: Fetching /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map
15 11 2015 23:21:37.546:DEBUG [proxy]: proxying request - /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map to localhost:8888
15 11 2015 23:21:37.547:WARN [proxy]: failed to proxy /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map (connect ECONNREFUSED 127.0.0.1:8888)
15 11 2015 23:21:37.548:DEBUG [middlware:source-files]: Requesting /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map /
15 11 2015 23:21:37.548:DEBUG [middlware:source-files]: Fetching /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map
15 11 2015 23:21:37.548:DEBUG [proxy]: proxying request - /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map to localhost:8888
15 11 2015 23:21:37.549:WARN [proxy]: failed to proxy /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map (connect ECONNREFUSED 127.0.0.1:8888)
15 11 2015 23:21:37.549:DEBUG [middlware:source-files]: Requesting /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map /
15 11 2015 23:21:37.549:DEBUG [middlware:source-files]: Fetching /Users/simon/Documents/Development/angular_dev/billrecon/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map
15 11 2015 23:21:37.550:DEBUG [proxy]: proxying request - /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map to localhost:8888
15 11 2015 23:21:37.550:WARN [proxy]: failed to proxy /base/bower_components/angular-file-upload/dist/angular-file-upload.min.js.map (connect ECONNREFUSED 127.0.0.1:8888)*编辑-运行gulp测试--startServers=true -以确保服务器已启动,并克服了连接被拒绝的错误。尽管如此,routerHelperProvider问题仍然存在
文件存在于正确的位置。
我认为我做了一些明显错误的事情,但我看不出来。有什么建议吗?
谢谢
西蒙
发布于 2016-05-09 02:49:54
问题似乎出在phantomjs的版本上。所以你需要做几件事。
从here
---dev phantomjs- phantomjs2 phantomjs2从phantomjs到phantomjs2的代码中的任何引用
https://stackoverflow.com/questions/33726326
复制相似问题