Travis-CI构建失败,具有URL /散列模块依赖性

时间:2013-01-12 23:02:31

标签: javascript node.js npm package-managers travis-ci

我在package.json中有以下依赖项数组:

"dependencies": {
    "doT": "git://github.com/nick-jonas/doT.git#cbc7041b646a79cca1034820db09167407d2f988",
    "lodash": "latest",
    "commander": "latest",
    "minimatch": "0.2.9",
    "prompt": "latest",
    "mkdirp": "latest",
    "fs-extra": ">=0.3.2",
    "shelljs": ">=0.1.0",
    "cheerio": ">=0.10.5",
    "readdirp": ">=0.2.1"
  }

注意第一个dep:

"doT": "git://github.com/nick-jonas/doT.git#cbc7041b646a79cca1034820db09167407d2f988"

这个与npm一起工作。运行npm install时,它会将正确版本的doT放入我的node_modules目录中。但是,当Travis-CI运行测试脚本时,它会给出此错误消息:

227  vows test/*.js --spec
228
229
230  module.js:340
231    throw err;
232          ^
233  Error: Cannot find module 'doT'
234    at Function.Module._resolveFilename (module.js:338:15)
235    at Function.Module._load (module.js:280:25)
236    at Module.require (module.js:362:17)
237    at require (module.js:378:17)
238    at Object.<anonymous> (/home/travis/builds/nick-jonas/assemblejs/lib/commands/writer.js:15:11)
239    at Module._compile (module.js:449:26)
240    at Object.Module._extensions..js (module.js:467:10)
241    at Module.load (module.js:356:32)
242    at Function.Module._load (module.js:312:12)
243    at Module.require (module.js:362:17)
244  npm ERR! Test failed.  See above for more details.
245  npm ERR! not ok code 0

在本地vows test/*.js --spec运行此命令也有效,所以我假设Travis-CI抓住散列URL依赖关系存在问题。

其他人有类似的问题吗?

2 个答案:

答案 0 :(得分:2)

看一下你的TravisCI task that failed,好像它确实成功安装了doT@1.0.0:

https://travis-ci.org/nick-jonas/assemblejs/jobs/4115442/#L188

如果我look at the dot.js project repository,看起来doT package.json文件的名称列为“dot”而不是“doT”。

我会尝试在writer.js中将require('doT')更改为require('dot')(或者在其他任何地方使用它)。

看起来这可能是一个区分大小写的问题,这对于处理npm世界来说尤其令人讨厌。

答案 1 :(得分:2)

@smithclay是完全正确的。您可能正在使用具有不区分大小写的文件系统的Mac。但是,运行travis的Linux却没有。

我最近遇到了类似的问题并创建了valiquire以检查所有require语句是否指向有效位置,包括正确的大小写。

这样我就可以在本地排除故障。在测试过程中包含一个valiquire检查也很有用,以避免破坏构建。