Node.js Travis CI找不到所需的相对模块

Node.js Travis CI找不到所需的相对模块,node.js,travis-ci,commonjs,Node.js,Travis Ci,Commonjs,我有一个Travis构建作业正在运行mocha测试,但是构建失败并出现错误: 错误:找不到模块'./sources/reddit' 我的文件树如下 feeds/ sources/ Reddit.js Feeds.js app.js 在Feeds.js中,我正在做 var https = require('https'), q = require('q'), Reddit = require('./sources/re

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

错误:找不到模块'./sources/reddit'

我的文件树如下

feeds/ 
     sources/ 
          Reddit.js
     Feeds.js
app.js
在Feeds.js中,我正在做

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

然而,它似乎在标记加载时出错。

此错误是因为我引用了
/sources/reddit
reddit
作为小写,在文件系统上,文件是
reddit
和大写的
R


MacOSX很好地处理了区分大小写的问题,而Linux则没有。

我也遇到了这个问题,但是大写问题更难发现

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

然而,Git并没有在不区分大小写的OSs上检测到大小写的变化,所以每次travis ci运行时,它都会使用小写名称,因此构建失败。(有关如何正确执行此操作的详细信息,请参阅)


我只需重命名文件并更改所有引用即可解决此问题,这样git就可以使用新名称。

要完成其他人的回答,另一种情况是,您可能会在CI上遇到类似问题,即git会忽略您所需的文件。因此,在本地,有tthere,但不是Travis构建时


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

我在MacOS上遇到了一个疯狂的不匹配情况:

  • 本地目录名称小写:
    landing
    (使用Finder、terminal和VS代码进行检查)
  • 在GitHub上,第一个字母是大写的:
    Landing
当然,没有一个CI可以处理这个问题:Travis和CircleCI都未能构建

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

  • 将文件/dir重命名为类似于
    file1
    的其他名称并提交更改
  • 重新命名并提交更改

我想说的恰恰相反:Linux很好地处理了区分大小写的问题,而Mac OSX却没有。。。