由于URL/散列模块依赖,Travis-CI构建失败

Travis-CI build failing with URL/hashed module dependency

本文关键字:Travis-CI 构建 失败 依赖 模块 URL 由于      更新时间:2023-09-26

我在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"
  }

注意第一个深度:

"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依赖项的问题。

还有人有类似的问题吗?

查看失败的TravisCI任务,看起来它确实成功安装了doT@1.0.0:

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

如果我查看doT .js项目存储库,它看起来像doT package.json文件的名称被列为"doT"而不是"doT"。

我会尝试改变require('doT')require('dot')在writer.js(或任何其他地方使用)。

看起来这可能是一个区分大小写的问题,这在处理npm世界时可能会特别烦人。

@smithclay完全正确。你可能在Mac上工作,它有一个不区分大小写的文件系统。然而,在运行travis的Linux上,却没有。

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

这样我就可以在本地排除故障。为了避免破坏构建,将有效性检查作为测试的一部分也很有用。