Angular JS 错误: [$injector:nomod] 模块 'portfolioMockupApp.
Angular JS Error: [$injector:nomod] Module 'portfolioMockupApp.services' is not available
>我正在尝试使用 Karma 编写一些单元测试,但收到以下错误:
PhantomJS 1.9.8 (Mac OS X) 錯誤 错误: [$injector:nomod] 模块 'portfolioMockupApp.services' 不可用!您要么拼错了模块名称,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。 http://errors.angularjs.org/1.3.3/$injector/nomod?p0=portfolioMockupApp.services at/Users/danielbogart/Documents/coding/work/portfolio-mockup/bower_components/angular/angular.js:1749
另外,我在portfolioMockupApp.services模块中有两个单独的文件,都保存在脚本/服务目录中。
Karma.conf 文件部分:
files: [
'bower_components/angular/angular.js',
'bower_components/angular-mocks/angular-mocks.js',
'bower_components/angular-animate/angular-animate.js',
'bower_components/angular-cookies/angular-cookies.js',
'bower_components/angular-resource/angular-resource.js',
'bower_components/angular-sanitize/angular-sanitize.js',
'bower_components/angular-touch/angular-touch.js',
'test/mock/**/*.js',
'test/spec/**/*.js',
'app/scripts/services/*.js',
'app/scripts/directives/*.js',
'app/scripts/controllers/*.js',
'app/scripts/app.js',
'node_modules/angular/angular.js',
'node_modules/angular-mocks/angular-mocks.js',
'./src/**/*.js',
'./test/**/*.js'
],
产品组合.js规格(目前第一次也是唯一一次测试):
'use strict';
describe('Controller: PortfolioCtrl', function () {
// load the controller's module
beforeEach(module('portfolioMockupApp', 'portfolioMockupApp.services'));
var PortfolioCtrl,
scope;
// Initialize the controller and a mock scope
beforeEach(inject(function ($controller, $scope, $log, $stateParams, $state,
$rootScope,portService, portfolioCreateService) {
scope = $rootScope.$new();
PortfolioCtrl = $controller('PortfolioCtrl', {
$scope: scope
});
}));
it('should have a list of 5 tabs by default', function () {
expect(scope.tabs.length).toBe(5);
});
});
问题源于使用同一服务模块的两个单独的服务文件。在 Karma.conf 文件中,我必须显式加载初始化模块的服务文件,然后加载其他服务文件和应用程序的其余部分。
'app/scripts/services/port-service.js',
'app/scripts/services/new-port-service.js',
'app/scripts/app.js',
'app/scripts/services/*.js',
'app/scripts/directives/*.js',
'app/scripts/controllers/*.js',
感谢您重新检查解决方案。 当两个模块相互依赖并存在于同一个文件夹中时,我遇到了同样的问题,让我们称它们为 app/scripts/parentModule.js 和 app/scripts/constants.js。 两者都应该由karma.config.js中的通配符条目获取。
'app/scripts/*.js'
'app/scripts/anotherFolder/*.js'
由于常量.js依赖于 parentModule.js,因此必须首先包含后者,我的猜测是通配符按字母顺序包含文件,但我尚未确认这一点。
'app/scripts/parentModule.js'
'app/scripts/*.js'
'app/scripts/anotherFolder/*.js'
- Javascript,访问一个主要对象模块模式中的每个对象
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 如何从模块链中调用函数.导出到节点中
- 尽管链接成功并已成功下载,但未找到NPM模块
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- 从模块内部访问Express装载路径
- RequireJS向模块传递配置总是返回undefined
- Node.js正在更改应用程序以使用集群模块
- 在Meteor项目中安装并包含npm模块后出错
- 模块模式和这个
- 将依赖外部库的UMD模块与browserfy捆绑在一起
- 找不到模块捆绑包
- JavaScript命名约定;静态“;类或模块
- 显示模块模式在Knockout中设置模型的新实例
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- Javascript模块系统I'I’我正在努力,但搞不明白
- 如何捆绑循环相关模块
- 如何捆绑commonjs模块,除非指定需要
- 错误:$injector:modulerr模块错误(我的第一个SPA应用程序)
- 如何在Mocha/Chai中测试JS原型(非模块)