Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 还有一个';模块未定义';因果报应_Javascript_Angularjs_Unit Testing_Jasmine_Karma Jasmine - Fatal编程技术网

Javascript 还有一个';模块未定义';因果报应

Javascript 还有一个';模块未定义';因果报应,javascript,angularjs,unit-testing,jasmine,karma-jasmine,Javascript,Angularjs,Unit Testing,Jasmine,Karma Jasmine,我是angularjs的新手,我正在尝试使用Jasmine和Karma测试一个应用程序。如果我只使用Jasmine提供的基本框架(带有SpecRunner.html),测试就可以正常工作,但是当我尝试使用Karma时,我总是得到相同的“模块未定义”消息 我在karma.conf.js中的文件依赖项如下: files: [ '../../js/angular.min.js', '../../js/angular-sanitize.min.js', 'lib/angular-mocks.

我是angularjs的新手,我正在尝试使用Jasmine和Karma测试一个应用程序。如果我只使用Jasmine提供的基本框架(带有SpecRunner.html),测试就可以正常工作,但是当我尝试使用Karma时,我总是得到相同的“模块未定义”消息

我在karma.conf.js中的文件依赖项如下:

files: [
  '../../js/angular.min.js',
  '../../js/angular-sanitize.min.js',
  'lib/angular-mocks.js',
  '../../js/app.js',
  'lib/jasmine-2.4.1/jasmine.js',
  'lib/jasmine-2.4.1/jasmine-html.js',
  'lib/jasmine-2.4.1/boot.js',
  'lib/jquery-1.11.3.min.js',
  'spec/spec.js'
]

到目前为止,这看起来与我之前看到的所有karma undefined module问题完全相同,只是我非常确定angular-mocks.js包含在内,文件位置正确,并且我没有使用任何其他可能覆盖karma.conf.js的框架。很抱歉再次提出同样的问题,但我是否遗漏了一些非常明显的问题?

我过去也有过类似的因果报应问题。它对将依赖项放入的顺序很挑剔。例如,如果您正在使用JQuery和Angular,那么Karma将在Angular之前使用JQuery。我看到你把Angular放在它的所有子模块之前,这很好

我将按照以下顺序放置依赖项:

files: [
  'lib/jquery-1.11.3.min.js',
  '../../js/angular.min.js',
  '../../js/angular-sanitize.min.js',
  'lib/angular-mocks.js',
  'lib/jasmine-2.4.1/jasmine.js',
  'lib/jasmine-2.4.1/jasmine-html.js',
  'lib/jasmine-2.4.1/boot.js',
  '../../js/app.js',
  'spec/spec.js'
]

在同一个应用程序中使用角度模块的缩小版和未缩小版也有问题。例如,如果要使用Angular的缩小版本,请确保其所有子模块都已缩小。对于任何JavaScript依赖,我都会这么说。保持一致。

您得到的确切错误消息是什么?@Jon“ReferenceError:module未定义”,可追溯到angular-mocks.js和jasmine。我会发布一个更完整的跟踪,但在遵循Nocomm的解决方案之后,我似乎无法重现错误……而像这样的问题正是为什么值得考虑使用RequireJS的原因,即使只是为了您的测试。Karma模块必须按照所需依赖项的顺序加载所有这些脚本文件。一旦您遇到两个不同模块使用冲突依赖项的情况(这对于整个应用程序来说很好),您将看到对RequireJS的需求。这是一个很好的观点。很难跟上所有的JS工具和框架。它们太多了,我还没有时间去学习/使用RequireJS。当我意识到在配置文件中使用通配符会导致我的一些js以错误的顺序加载时,我认为我很聪明,但我从来没有想到jquery是其中的一部分!好吧,我都改变了依赖顺序,并指出了angular.js的unmin版本,它似乎已经解决了模块问题。但由于某些原因,即使在恢复这些更改后,我也无法重现错误。我收到一条“TypeError:Cannotreadproperty'$injector'of null”消息,但我想这是我必须解决的其他问题。谢谢你的帮助!