NODE_PATH被忽略或无效

时间:2012-01-21 17:01:24

标签: node.js

我正在尝试在新服务器上运行我的节点应用程序,并且遇到NODE_PATH环境变量的一些问题。该应用程序在我的本地计算机(OSX Lion)上运行良好,但在服务器(Redhat linux)上运行不正常。在我的项目目录node app.js中使用/development/nodeproject启动我的应用时,出现以下错误:

Error: Cannot find module 'mod/core/models/Category'
    at Function._resolveFilename (module.js:334:11)
    at Function._load (module.js:279:25)
    at Module.require (module.js:357:17)
    at require (module.js:368:17)
    at /development/nodeproject/app.js:57:5
    at Object.<anonymous> (/development/nodeproject/app.js:258:1)
    at Module._compile (module.js:432:26)
    at Object..js (module.js:450:10)
    at Module.load (module.js:351:31)
    at Function._load (module.js:310:12)

mod/core/models/Category是我的app.js中的第一个require(),如下所示:var Category = require('mod/core/models/Category')。所以显然节点不在我的项目目录中寻找模块。

我不确定为什么,因为我做了以下更改(在本地计算机上运行正常)。

  • export NODE_PATH=/development/nodeproject添加到我的〜/ .bash_profile
  • source ~/.bash_profile
  • 如果我运行env,我会在其中列出NODE_PATH=/development/nodeproject
  • 在我的app.js中如果我控制日志process.env.NODE_PATH我得到/development/framework(这应该输出数组而不是字符串吗?)

可能相关的其他信息:

  • 我在节点v0.6.7
  • 我正在以root身份执行所有这些操作(sudo su - )

此时我不知道还能做些什么。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:5)

NODE_PATH用于模块,不用于解决方案文件。 尝试      module.paths.push(“/ development / nodeproject”,“one / more / path”); 在任何require()调用之前。并且你真的应该对nodeproject目录中的文件使用 require('。/ mod / core / models / Category')之类的相对要求

答案 1 :(得分:1)

您要查找的功能已被删除。使用node_modules目录或相对要求,例如require('./mod/core/models/Category')

这个答案有更多信息:NODE_PATH error with node.js while attempting to setup jsctags for vim