当前位置: 首页 > 知识库问答 >
问题:

Karma 未在 Jenkins CI 中运行,找不到模块 'Karma-jasmine'

邵兴庆
2023-03-14

我正在Jenkins CI建立一个带自动测试的Angular 4 SPA。SPA是一个更大的、由Maven管理的项目的一部分,因此构建也是由Maven进行管理的。到目前为止,我已经:

  1. 在Jenkins上安装NodeJS插件,使用安装来自版本为8.6.0的nodejs.org
  2. 配置“要安装的全局npm软件包”=“karma-cli phantomjs-预构建的jasmine-core karma-jasmine karma-phantomjs-启动器karma-junit-记者karma-覆盖”
  3. 在浏览器的pom.xml中添加了“maven-karma-plugin”=PhantomJS/SingleRun=true/记者=dots, junit
  4. 启用”提供节点

构建过程开始时非常顺利,但最终我得到:

[INFO] --- maven-karma-plugin:1.6:start (default) @ webclient ---
[INFO] Executing Karma Test Suite ...
/var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node.js_8.6.0/bin/karma start /var/lib/jenkins/workspace/funnel_build/webclient/karma.conf.js --browsers PhantomJS --reporters dots,junit --single-run
07 10 2017 17:07:52.801:ERROR [config]: Error in config file! 
 { Error: Cannot find module 'karma-jasmine' 
    at Function.Module._resolveFilename (module.js:527:15) 
    at Function.Module._load (module.js:476:23) 
    at Module.require (module.js:568:17) 
    at require (internal/module.js:11:18) 
    at module.exports (/var/lib/jenkins/workspace/funnel_build/webclient/karma.conf.js:9:7) 
    at Object.parseConfig (/var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node.js_8.6.0/lib/node_modules/karma/lib/config.js:410:5)

在生成日志的开头安装 npm:

$ /var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node.js_8.6.0/bin/npm install -g karma-cli phantomjs-prebuilt jasmine-core karma-jasmine karma-phantomjs-launcher karma-junit-reporter karma-coverage
/var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node.js_8.6.0/bin/karma -> /var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node.js_8.6.0/lib/node_modules/karma-cli/bin/karma
/var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node.js_8.6.0/bin/phantomjs -> /var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node.js_8.6.0/lib/node_modules/phantomjs-prebuilt/bin/phantomjs

> phantomjs-prebuilt@2.1.15 install /var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node.js_8.6.0/lib/node_modules/phantomjs-prebuilt
> node install.js

Considering PhantomJS found at /var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node.js_8.6.0/bin/phantomjs
Looks like an `npm install -g`
Could not link global install, skipping...
Download already available at /tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2
Verified checksum of previously downloaded file
Extracting tar contents (via spawned process)
Removing /var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node.js_8.6.0/lib/node_modules/phantomjs-prebuilt/lib/phantom
Copying extracted folder /tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2-extract-1507388835905/phantomjs-2.1.1-linux-x86_64 -> /var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node.js_8.6.0/lib/node_modules/phantomjs-prebuilt/lib/phantom
Writing location.js file
Done. Phantomjs binary available at /var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node.js_8.6.0/lib/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs
npm WARN karma-jasmine@1.1.0 requires a peer of karma@* but none was installed.
npm WARN karma-junit-reporter@1.2.0 requires a peer of karma@>=0.9 but none was installed.
npm WARN karma-phantomjs-launcher@1.0.4 requires a peer of karma@>=0.9 but none was installed.

+ karma-phantomjs-launcher@1.0.4
+ karma-coverage@1.1.1
+ karma-jasmine@1.1.0
+ karma-cli@1.0.1
+ karma-junit-reporter@1.2.0
+ jasmine-core@2.8.0
+ phantomjs-prebuilt@2.1.15
updated 7 packages in 10.553s

(包“业力”目前不在列表中的原因是我在某处读到应该使用业力来代替业力。但是,添加“karma”包不会改变任何东西。

任何想法为什么“找不到模块'业力茉莉花'”弹出?在(2)中,你会看到列出了karma-jasmine软件包,我在服务器上找到了它,但仍然没有被NodeJS插件找到。

谢谢,西蒙

共有1个答案

叶景龙
2023-03-14

我通过运行“npm install”作为构建过程的一部分,然后在本地npm包上运行所有内容,设法让它正常工作。

整个设置如下所述:https://funneltravel.wordpress.com/2017/10/16/running-karma-with-maven-on-jenkins-ci/

 类似资料:
  • 我已经尝试重新启动我的node_dependencies并再次运行,但我不确定还可以尝试什么 编辑:我已经验证了我的node_dependencies目录和插件目录在那里。

  • 简而言之, > 我正在创建一个项目,从Angular 2“Routing”示例的Plunker代码开始(通过Angular 2 Advanced Tutorial for Routing链接访问)。那个源头没有业力或茉莉花的配置。 然后我运行npm测试,但发现我没有业力能力。从那以后,我根据程序员博客的建议,安装了各种软件包。我的安装变成了: 我运行了“Karma Init”并尽我所能地回答了问题

  • 我正在使用jasmine的karma,并按照在线指南安装了 和其他必需品 我跑了 和 它打开了一个外部铬浏览器,显示因果报应是相关的。我为一个函数写了一个简单的单元测试,它似乎没有运行任何测试 这是我的karma配置文件。 我的单元测试 我要测试的控制器中的特定功能 当我运行因果报应时,控制台上显示的是什么 附加信息:我正在使用AngularJS和RubyonRails。我知道有茉莉宝石可以帮助我

  • 问题内容: 我知道这个问题已经被问过很多次了,而且我知道在大多数情况下人们会丢失文件。 我遇到了同样的问题,试图在模块上测试工厂。不幸的是,我一直遇到测试方面的问题(为什么要使用Angular,为什么要假设和对象?),未定义模块的状态。我很茫然。我也尝试过使用angular.mocks.module,但随后收到一条消息,提示未定义Angular。我究竟做错了什么? 值得注意的是,我正在使用gulp

  • Karma 是一个简单的javascript测试工具,它允许在多个真正的浏览器执行JavaScript代码.

  • 我通过Jasmine、Karma和各种浏览器进行测试。我目前正在调试一个只在PhantomJS中失败的测试。 我想调试这个调用,所以我在karma中设置了一个自定义的PhantomJS启动器,在调试端口打开的情况下运行它。 我可以通过该端口访问Chrome中的远程调试器,但是,它似乎对我的任何测试文件一无所知。它报告一个“关于:空白”和一个“localhost:9876”(Phantom正在访问的