【问题标题】:'undefined' is not a function (evaluating '_.contains) karma test“未定义”不是函数(评估“_.contains”)业力测试
【发布时间】:2016-04-26 04:00:13
【问题描述】:

在运行我的 karma 测试时,我在 jenkins 构建中收到此错误。所以说清楚,这在本地工作正常,我所有的测试都通过了,但是当我在詹金斯盒子上运行完全相同的代码时,我得到了错误:

PhantomJS 1.9.8 (Linux 0.0.0) VisitDataSpec #emailExists should return true if email is already FAILED
    TypeError: 'undefined' is not a function (evaluating '_.contains(visitEmails,email)')
        at /home/server/jenkins/workspace/Reception UI Build/src/app/model/VisitData.js:9
        at /home/server/jenkins/workspace/Reception UI Build/test/app/model/VisitData.spec.js:208

我闻到了 phantomjs 的错误版本。服务器上的版本是1.9.0。我在本地将我的版本降级到相同的版本,以尝试在本地重现问题,但没有发生。

我已经尝试同时包含下划线和 lodash,但这些库都不起作用。

在 Restangular 也尝试使用下划线的测试中,我遇到了同样的错误:

PhantomJS 1.9.8 (Linux 0.0.0) EmailVisitControllerSpec #signIn should call VisitService to add a new service with scope data FAILED
    TypeError: 'undefined' is not a function (evaluating '_.contains(safeMethods, operation.toLowerCase())')
        at /home/server/jenkins/workspace/Reception UI Build/bower_components/restangular/dist/restangular.js:21
        at elemFunction (/home/server/jenkins/workspace/Reception UI Build/bower_components/restangular/dist/restangular.js:1217)
        at wrapper (/home/server/jenkins/workspace/Reception UI Build/bower_components/lodash/lodash.js:3949)
        at postFunction (/home/server/jenkins/workspace/Reception UI Build/bower_components/restangular/dist/restangular.js:1246)
        at apply (/home/server/jenkins/workspace/Reception UI Build/bower_components/lodash/lodash.js:402)
        at wrapper (/home/server/jenkins/workspace/Reception UI Build/bower_components/lodash/lodash.js:4254)
        at /home/server/jenkins/workspace/Reception UI Build/src/app/rest/VisitService.js:9
        at invoke (/home/server/jenkins/workspace/Reception UI Build/node_modules/karma-sinon-chai/node_modules/sinon/pkg/sinon.js:2583)
        at addVisit (:1)
        at /home/server/jenkins/workspace/Reception UI Build/src/app/visits/EmailVisitController.js:9
        at /home/server/jenkins/workspace/Reception UI Build/test/app/visits/EmailVisitController.spec.js:91

使用 angular 1.4.2、angular-mocks 1.4.2、mocha 2.3.4 和现在,下划线 1.8.3 或 lodash 3.10.1(都尝试过)。

顺便说一句,这可能是相关的:在 Jenkins 上构建时,我有其中四个:

npm WARN install Couldn't install optional dependency: Unsupported

也许它没有解决一些依赖关系,但不幸的是我看不到哪些依赖关系。使用 npm 3.3.2。

有人对我在这里缺少的东西有任何想法吗?任何已知的不兼容版本?

【问题讨论】:

  • 我也有同样的问题 - 你找到解决方案了吗?

标签: angularjs npm phantomjs underscore.js lodash


【解决方案1】:

我发现了问题:lodash 4.x。移回 3.10.1,一切正常。

【讨论】:

  • 我实际上已经在使用 3.10.1。还尝试使用下划线而不是 lodash,但它也不起作用。
  • 我也在使用 3.10.1,但我的 CI 将其更新为 4.X。我刚刚将 lodash#3.10.1 添加到我的 bower.json 中。希望对您有所帮助
【解决方案2】:

是的,restangular 里面有这条线:

 "dependencies": {
    "lodash": ">=1.3.0"
  },

lodash 最近刚升级到 4.0 版,所以现在当你安装 restangular 时,它会下载最新版本的 lodash

要解决这个问题,只需在 3.10.1 版本中添加 lodash 你的依赖项(npm 或 bower):

  "dependencies": {
    ...
    "restangular": "1.5.1",
    ...
    "lodash": "3.10.1"
  }

【讨论】:

  • 这对我来说真的不起作用。无论如何,开发者似乎不再支持restangular,所以我停止使用它。
猜你喜欢
  • 1970-01-01
  • 2018-08-04
  • 2014-01-01
  • 2015-03-30
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-16
相关资源
最近更新 更多