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

时间:2013-05-17 01:47:58

标签: node.js express

我正在尝试部署一个在我的本地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. 确保运行相同的Node.js版本 nvm(https://github.com/creationix/nvm
  2. 仅删除node_modules 通过运行“npm install”
  3. 重新安装它们

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

3 个答案:

答案 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'