我在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依赖关系存在问题。
其他人有类似的问题吗?
答案 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检查也很有用,以避免破坏构建。