如何在angularjs中包含模块以删除未找到的错误模块?
how to include module in angualar js to remove error module not found?
我正在制作简单的应用程序,使用 angular js 仅显示 header。这是我的代码
http://plnkr.co/edit/dplJ6sf4kgiwJ5pXu4GE?p=preview
它只显示 "home" header
我在电脑上制作相同的代码并安装业力和一切..
我的问题是我无法测试它的控制器。我收到此错误
Failed to instantiate module app.home due to:
Error: [$injector:nomod] Module 'app.home' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
http://errors.angularjs.org/1.4.8/$injector/nomod?p0=app.home
at /Users/naveenkumar/Documents/ionic_work/SimpleDemo/bower_components/angular/angular.js:68:12
我就这样karma.conf.js
// Karma configuration
// Generated on Fri Dec 18 2015 19:53:32 GMT+0530 (IST)
module.exports = function(config) {
config.set({
// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: '',
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['jasmine'],
// list of files / patterns to load in the browser
files: [
'bower_components/angular/angular.js' ,
'bower_components/jquery/dist/jquery.js' ,
'bower_components/angular-mocks/angular-mocks.js' ,
'bower_components/angular-resource/angular-resource.js' ,
'app/**/.js',
'app/**/*.html',
'test/**.js'
],
// list of files to exclude
exclude: [
],
// preprocess matching files before serving them to the browser
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
preprocessors: {
'app/**/*.html':['ng-html2js']
},
ngHtml2JsPreprocessor:{
moduleName:'templates'
},
// test results reporter to use
// possible values: 'dots', 'progress'
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
reporters: ['progress'],
// web server port
port: 9876,
// enable / disable colors in the output (reporters and logs)
colors: true,
// level of logging
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
logLevel: config.LOG_INFO,
// enable / disable watching file and executing tests whenever any file changes
autoWatch: true,
// start these browsers
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
browsers: ['Chrome'],
// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: false,
// Concurrency level
// how many browser should be started simultanous
concurrency: Infinity
})
}
我是这样测试的
describe('check value',function(){
var controller,
$scope,
$rootScope;
beforeEach(function(){
module('app.home')
inject(function($injector){
$rootScope=$injector.get('$rootScope');
$scope=$rootScope.$new();
controller=$injector.get('$controller')('homecntrl',{$scope:$scope});
})
})
//it('check value after click',function(){
// controller.clickbtn();
// expect(controller.message).toEqual('test');
//})
it('check init',function(){
expect(controller.message).toBeUndefined();
})
it('check fine',function(){
expect(true).toBeTruthy();
})
})
您的 index.html 文件中有两个问题。
第一个问题是在 HTML 文件中导入模块之前导入了控制器。第二个问题是您导入的 Karma 版本与您使用的 angular 版本不匹配。
在控制器之前导入的模块
<script src="controller/home.controller.js"></script>
<script src="router/router.js"></script>
<script src="app.js"></script>
Karma 设置为 Angular 版本 1.4.8,但 Angular 是版本 1.2.16
<script data-require="angular.js" data-semver="1.2.16" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
在为 Angular 应用程序导入脚本时,您必须在模块本身之前导入模块依赖项,最后所有控制器、指令和服务都必须在它们所属的模块之后导入。 'app' 依赖于 'app.home',因此 'app.home' 在 'app' 之前导入。 'homeCntrl' 属于模块 'app',因此 'app' 在 'homeCntrl'.
之前导入
重新排列如下:
<script src="router/router.js"></script>
<script src="app.js"></script>
<script src="controller/home.controller.js"></script>
最后更新您的 Karma 版本以匹配您正在使用的 Angular 版本。
<script data-require="angular.js" data-semver="1.2.16" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js"></script>
笨蛋:
我正在制作简单的应用程序,使用 angular js 仅显示 header。这是我的代码 http://plnkr.co/edit/dplJ6sf4kgiwJ5pXu4GE?p=preview 它只显示 "home" header 我在电脑上制作相同的代码并安装业力和一切..
我的问题是我无法测试它的控制器。我收到此错误
Failed to instantiate module app.home due to:
Error: [$injector:nomod] Module 'app.home' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
http://errors.angularjs.org/1.4.8/$injector/nomod?p0=app.home
at /Users/naveenkumar/Documents/ionic_work/SimpleDemo/bower_components/angular/angular.js:68:12
我就这样karma.conf.js
// Karma configuration
// Generated on Fri Dec 18 2015 19:53:32 GMT+0530 (IST)
module.exports = function(config) {
config.set({
// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: '',
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['jasmine'],
// list of files / patterns to load in the browser
files: [
'bower_components/angular/angular.js' ,
'bower_components/jquery/dist/jquery.js' ,
'bower_components/angular-mocks/angular-mocks.js' ,
'bower_components/angular-resource/angular-resource.js' ,
'app/**/.js',
'app/**/*.html',
'test/**.js'
],
// list of files to exclude
exclude: [
],
// preprocess matching files before serving them to the browser
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
preprocessors: {
'app/**/*.html':['ng-html2js']
},
ngHtml2JsPreprocessor:{
moduleName:'templates'
},
// test results reporter to use
// possible values: 'dots', 'progress'
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
reporters: ['progress'],
// web server port
port: 9876,
// enable / disable colors in the output (reporters and logs)
colors: true,
// level of logging
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
logLevel: config.LOG_INFO,
// enable / disable watching file and executing tests whenever any file changes
autoWatch: true,
// start these browsers
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
browsers: ['Chrome'],
// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: false,
// Concurrency level
// how many browser should be started simultanous
concurrency: Infinity
})
}
我是这样测试的
describe('check value',function(){
var controller,
$scope,
$rootScope;
beforeEach(function(){
module('app.home')
inject(function($injector){
$rootScope=$injector.get('$rootScope');
$scope=$rootScope.$new();
controller=$injector.get('$controller')('homecntrl',{$scope:$scope});
})
})
//it('check value after click',function(){
// controller.clickbtn();
// expect(controller.message).toEqual('test');
//})
it('check init',function(){
expect(controller.message).toBeUndefined();
})
it('check fine',function(){
expect(true).toBeTruthy();
})
})
您的 index.html 文件中有两个问题。
第一个问题是在 HTML 文件中导入模块之前导入了控制器。第二个问题是您导入的 Karma 版本与您使用的 angular 版本不匹配。
在控制器之前导入的模块
<script src="controller/home.controller.js"></script>
<script src="router/router.js"></script>
<script src="app.js"></script>
Karma 设置为 Angular 版本 1.4.8,但 Angular 是版本 1.2.16
<script data-require="angular.js" data-semver="1.2.16" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
在为 Angular 应用程序导入脚本时,您必须在模块本身之前导入模块依赖项,最后所有控制器、指令和服务都必须在它们所属的模块之后导入。 'app' 依赖于 'app.home',因此 'app.home' 在 'app' 之前导入。 'homeCntrl' 属于模块 'app',因此 'app' 在 'homeCntrl'.
之前导入重新排列如下:
<script src="router/router.js"></script>
<script src="app.js"></script>
<script src="controller/home.controller.js"></script>
最后更新您的 Karma 版本以匹配您正在使用的 Angular 版本。
<script data-require="angular.js" data-semver="1.2.16" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js"></script>
笨蛋: