Travis-CI找不到相关模块的要求

时间:2015-02-10 12:22:35

标签: node.js travis-ci commonjs

我有一个正在运行mocha测试的Travis构建作业,但构建失败并出现错误:

Error: Cannot find module './sources/reddit'

我的文件树如下

feeds/ 
     sources/ 
          Reddit.js
     Feeds.js
app.js

在Feeds.js中我正在做

var https   = require('https'),
    q       = require('q'),
    Reddit  = require('./sources/reddit');

然而,似乎是在加载它时出现错误。

4 个答案:

答案 0 :(得分:8)

此错误是因为我引用./sources/redditreddit为小写,在文件系统上文件为Reddit,大写为R

Mac OSX很好地处理了区分大小写,而Linux则没有。

答案 1 :(得分:1)

我也遇到了这个问题,但资本化问题更难以发现。

当我第一次将文件检入git时,它被命名为container.js(小写" c")。我随后将其更改为Container.js,因此它反映了我的文件系统上的大写名称。

然而,Git并没有检测到不区分大小写操作系统的大小写更改,所以每次travis-ci运行时,它都会针对小写名称运行,因此构建失败。 (有关如何正确执行此操作的详细信息,请参阅Changing capitalization of filenames in Git

我通过简单地重命名文件并更改所有引用来解决这个问题,以便git选择新名称。

答案 2 :(得分:1)

要完成他人的回答,在CI上可能遇到类似问题的另一种情况是,从Git中忽略了所需的文件。因此,在本地有,但是在Travis建立时没有。

因此,请确保您的.gitignore中没有禁止签入这些文件的规则。

答案 3 :(得分:0)

我在MacOS上遇到了这种疯狂的情况:

  • 本地目录名称为小写:landing(已通过Finder,终端和VS代码检查)
  • 在GitHub上,首字母大写:Landing

当然,没有CI可以解决这个问题:Travis和CircleCI均无法建立。

GitHub案例不匹配的解决方案:

  • 将文件/目录重命名为file1之类,然后提交更改
  • 重命名并提交更改