Node.js 移动到服务器后,Require找不到自定义模块

Node.js 移动到服务器后,Require找不到自定义模块,node.js,express,Node.js,Express,不过,我正在尝试部署一个在本地MacLion上运行良好的节点应用程序。在虚拟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)

不过,我正在尝试部署一个在本地MacLion上运行良好的节点应用程序。在虚拟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)
我试过什么

  • 确保通过运行相同的Node.js版本 nvm()
  • 已删除节点_模块,仅用于 通过运行“npm安装”重新安装它们

  • 为什么在Mac上工作时,“require”无法从服务器上的“lib”文件夹导入自定义模块?谢谢

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

    尝试设置文件权限
    chmod-R 744'../lib/review'
    看起来“require”模块在Ubuntu上区分大小写,但在Mac上不区分大小写。

    lib文件夹中的所有模块都以大写字母开头(即lib/review.js),但是当代码的其他部分需要时,它是小写的require(“../lib/review”)。这在Ubuntu上引起了问题,但在MacLion上没有。通过将代码更新为“require”(“../lib/Review”),解决了这个问题


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

    谢谢,没有成功,744或777文件权限都不能解决问题。还有其他想法吗?关于区分大小写你是对的。它可以被认为是一个bug,但同时,也可以被认为是开发人员应该知道的东西。在内核中修复它可能会增加每个文件(在OS X上)的开销,因为它需要检查每个文件的大小写是否完全匹配。换句话说,大小写不敏感可以被认为是OS X上的一个“功能”。:)-这家伙为它写了一个验证模块。在joyent/node中快速搜索只会给出一个结果。如果您强烈认为应该以某种方式修复它,您可以报告一个问题。也许在OSX上强制区分大小写的功能(我的首选解决方案,如果有的话)可以放在一个标志后面。尽管如此,这是模块系统的一个重大变化,艾萨克斯对此非常保守。谢谢你Meryn…..只要倡议人意识到这一点,我很高兴我已经完成了我的一小部分:)虽然我认为我不适合发表评论,但请允许我分享来自不同框架/语言的观点,我觉得这会被认为是一个错误,但再一次…这是一个不同的生态系统,有自己的人生观,没有什么错…相反,它有利于创新
    var Review = require('../lib/review');