1

但是,我正在尝试部署一个在本地 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 文件夹中有我自己的自定义模块,这些模块是来自以下路由的“需要”:

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

我尝试了什么?

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

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

4

3 回答 3

1

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

于 2013-05-17T01:58:05.413 回答
1

看起来“require”模块在 Ubuntu 上区分大小写,但在 Mac 上不区分大小写……我在 lib 文件夹中的所有模块都以大写开头(即 lib/Review.js),但在代码的其他部分需要时,它是小写的 - 要求('../lib/review')。这在 Ubuntu 上引起了问题,但在 Mac lion 上却没有。通过将代码更新为'require('../lib/Review'),解决了问题

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

于 2013-05-17T19:15:21.150 回答
0

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

于 2013-05-17T09:25:34.710 回答