【问题标题】:Mocha test that runs locally won't run on Jenkins (environment issue)本地运行的 Mocha 测试不会在 Jenkins 上运行(环境问题)
【发布时间】:2016-10-20 15:21:59
【问题描述】:

我目前正在尝试使用 Jenkins 为使用 mocha 进行单元测试的 emberjs 节点项目实施 CI。我在 Amazon EC2 服务器上运行 Jenkins。

当我在本地(在我的桌面和 ec2 服务器上)运行 mocha 时,我得到了这个:

./node_modules/mocha/bin/mocha 
Initializing server on port 8090


  Unit Test for /test
test API call incoming
key res value is: test!
    ✓ gives a json object with res: test!


  1 passing (35ms)

但是,当我将 jenkins 设置为运行相同的命令时:

01:44:46 + ./node_modules/mocha/bin/mocha
01:44:46 
01:44:46 /var/lib/jenkins/workspace/Rekindle2_Node/server/routes/test/getTest.js:4
01:44:46 const getTest = (req, res) => {
01:44:46                             ^
01:44:46 SyntaxError: Unexpected token >
etc

我已经仔细检查过,package.json 有我需要的一切,而且我知道我没有全局安装任何改变事情的东西(因为我设法从 ec2 执行 git clone、npm install 和运行 mocha实例)。我所知道的是,詹金斯有时会在使用它运行的服务器上的环境变量时遇到问题?有谁知道我遇到的问题可能是什么?我也尝试过卸载并重新安装节点,这可能是 Jenkins 正在查看较旧的节点安装,而 ec2 不是。有没有办法告诉这个?如何查看特定构建的环境变量?

【问题讨论】:

    标签: node.js ember.js jenkins amazon-ec2 babeljs


    【解决方案1】:

    看起来 Jenkins 使用的是旧版本的 node.js。为了确认这一点,我会将日志记录添加到您的 Jenkins 工作中。 node --version 将打印 Jenkins 知道的 node.js 版本。此外,如果您对环境感兴趣,Jenkins web ui 中有一个视图可以显示特定构建的环境。或者您可以在 Jenkins 构建脚本中添加 env 作为一行以打印出当前的环境变量。如果结果是 node.js 版本问题,我会考虑使用插件来管理您的 nodejs 版本:node.js Jenkins plugin

    【讨论】:

    • 当我在本地运行时,node --version 按预期返回了 v5.0.0。在詹金斯运行时,我得到了 02:13:40 + node --version 02:13:40 v0.10.42 所以看起来你是对的!我想我会调查插件。谢谢!
    • 似乎就是这样!节点版本插件修复了一切。谢谢!
    • 很高兴听到这个消息! ?
    猜你喜欢
    • 2023-04-05
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 2015-03-26
    • 2018-01-11
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多