【问题标题】:Travis-CI build failing with URL/hashed module dependencyTravis-CI 构建因 URL/散列模块依赖而失败
【发布时间】:2012-12-27 06:11: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"
  }

注意第一个 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 依赖项存在问题。

其他人有类似的问题吗?

【问题讨论】:

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


    【解决方案1】:

    看看你的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 世界时可能会特别烦人。

    【讨论】:

      【解决方案2】:

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

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

      这样我就可以在本地解决它们。将 valiquire 检查作为测试的一部分也很有用,以避免破坏构建。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-17
        • 1970-01-01
        • 1970-01-01
        • 2016-06-08
        • 2021-04-01
        • 2019-11-02
        相关资源
        最近更新 更多