我正在尝试部署一个在我的本地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');
我尝试了什么?
为什么'require'无法在Mac上运行服务器上的'lib'文件夹导入自定义模块?谢谢
答案 0 :(得分:1)
尝试使用文件的完整路径,而不是使用相对路径(../).
答案 1 :(得分:1)
看起来'require'模块在Ubuntu上区分大小写,但在Mac上却不区分.... lib文件夹中的所有模块都以大写字母(即lib / Review.js)开头,但在其他部分需要时代码,它是小写 - require('../ lib / review')。这在Ubuntu上造成了问题,但在Mac Lion上却没有。通过将代码更新为'require('../ lib / Review'),解决了问题
这是一个错误,我应该报告这个?
答案 2 :(得分:0)
尝试设置文件权限chmod -R 744 '../lib/review'