Travis-CI cannot find relative module require

左心房为你撑大大i 提交于 2019-12-10 10:02:46

问题


I have a Travis build job that is running mocha tests, however the build is failing with the error:

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

My file tree is the following

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

Within Feeds.js I am doing

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

However it seems to be flagging up an error loading it up.


回答1:


This error is because I was referencing ./sources/reddit with reddit as lowercase, on the filesystem the file is Reddit with an uppercase R.

Mac OSX deals with case sensitivity well, Linux does not.




回答2:


To complete others's responses, another situation where you can run into a similar issue on CI, is simply that your required files are ignored from Git. So locally, there are tthere, but not when Travis builds.

So make sure there is no rule in your .gitignore that prevents those files to be checked in.




回答3:


I also just ran into this issue, but the capitalization issue was harder to detect.

When I first checked the file into git, it was named container.js (lower-case "c"). I subsequently changed it to Container.js, so it reflected the upper-case name on my file-system.

Git, however, doesn't detect the case change on case-insensitive OSs so every time travis-ci runs, it ran against the lower-case name and so failed the build. (See Changing capitalization of filenames in Git for details on how to do this properly)

I solved this by simply renaming the file and changing all references so that git picked up the new name.



来源:https://stackoverflow.com/questions/28431595/travis-ci-cannot-find-relative-module-require

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!