你如何让Travis CI启动mongodb?

你如何让Travis CI启动mongodb?,mongodb,travis-ci,Mongodb,Travis Ci,我创建了一个.travis.yml文件,据我所知是正确的,但是当travis CI运行测试时(这是一个新项目,所以我只有一个),我得到一个错误,即没有数据库运行 connection error: { [MongoError: connect ECONNREFUSED] name: 'MongoError', message: 'connect ECONNREFUSED' } 我添加了一个启动mongo的预测试脚本,现在我可以在不启动mongo的情况下运行本地测试,测试通过了,但使用Trav

我创建了一个.travis.yml文件,据我所知是正确的,但是当travis CI运行测试时(这是一个新项目,所以我只有一个),我得到一个错误,即没有数据库运行

connection error:  { [MongoError: connect ECONNREFUSED] name: 'MongoError', message: 'connect ECONNREFUSED' }
我添加了一个启动mongo的预测试脚本,现在我可以在不启动mongo的情况下运行本地测试,测试通过了,但使用Travis CI时会出现错误:

ERROR: child process failed, exited with error number 100
我的.travis.yml文件如下所示:

language: node_js
node_js:
  "0.10"

services:
- mongodb
下面是我在package.json中的脚本:

  "scripts": {
    "pretest": "mongod --fork --logpath /dev/null",
    "test": "./node_modules/mocha/bin/mocha test/**/*.js",
    "posttest": "mongo admin --eval 'db.shutdownServer()' > /dev/null",
    "start": "node server.js"
  },
我试图将链接放到travis,但我是新手,所以只能放一个链接,所以我将把链接放到我的回购协议上,这样,如果你想看到travis的全部失败,你可以从那里获得这些链接:

这方面的任何帮助都会很好。我是新来的堆栈溢出,所以请让我知道如果你需要更多的信息

谢谢你的帮助

我想买一件可能有用的东西

看起来您不需要像在预测试中那样手动启动mongodb。也许,我真的不知道,您的预测试是先运行的,之后travis尝试启动mongodb,但它已经运行了,它遇到错误并停止进程


我还发现了这个。问题出在mongodb数据目录的所有者身上。它在根目录下,但mongodb是在没有sudo的情况下启动的。如果您自己运行mongodb(就像您在预测试中所做的那样),您可以手动为目录指定
--dbpath
,并为您的用户提供可接受的权限

我查看了您的回购协议,看起来您有两个文件:

  • 一个名为
    .travis.yml
    但不启动MongoDB的
  • 一个名为
    travis.yml
    (注意这里没有前导点(即
    ),它以上面列出的代码启动MongoDB
Travis CI只拾取名为
.Travis.yml
的文件。所以一定要选对人

我为你的回购做了分叉,并用
.travis.yml
做了一个测试,似乎有


希望这有帮助

谢谢你的帮助,但不幸的是,我已经找到了那个线索,它对特拉维斯不起作用。我尝试了您的建议并删除了启动mongodb的预测试脚本,但它返回了原始的数据库连接错误。太棒了,就是这样,谢谢Dominic!我觉得有点傻,我已经找了几个小时的答案…好消息!不用担心,这会发生在我们最好的人身上