移动到服务器后,需要找不到自定义模块

我试图部署一个节点应用程序,在我的本地Mac Lion上运行良好,但是。 在虚拟Ubuntu的盒子上,它给出了一个错误:

module.js:340 throw err; ^ Error: Cannot find module '../lib/review' at Function.Module._resolveFilename (module.js:338:15) at Function.Module._load (module.js:280:25) at Module.require (module.js:364:17) at require (module.js:380:17) at Object.<anonymous> (/home/websites/Node_apps/min-driver-node/routes/reviews.js:2:14) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:364:17) 

在./lib文件夹中有我自己的自定义模块,它们是来自路由的'require',如下所示:

 var Review = require('../lib/review'); 

我试过了什么?

  1. 确保通过nvm运行相同的Node.js版本( https://github.com/creationix/nvm )
  2. 删除node_modules只是为了重新安装它们通过运行“npm install”

为什么'require'无法在Mac上运行时从服务器上的'lib'文件夹导入自定义模块? 谢谢

尝试使用文件的完整path,而不是使用相对path(../)。

它看起来像'需求'模块在Ubuntu上是区分大小写的,但不是在Mac ….我所有在lib文件夹中的模块以大写(即lib / Review.js)开始,但是当需要在代码的其他部分,它是小写 – 要求('../ lib / review')。 这是在Ubuntu上造成的问题,而不是在Mac狮子上。 通过将代码更新为'require('../ lib / Review'),解决了这个问题

这是一个错误,我应该报告这个?

尝试设置文件权限chmod -R 744 '../lib/review'