NODE_PATH被忽略或无效

JWK*_*JWK 5 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)
Run Code Online (Sandbox Code Playgroud)

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 - )

在这一点上,我不确定我还能做些什么.任何帮助将不胜感激.

int*_*ern 5

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


Clu*_*ess 1

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

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

  • 我知道 `require.paths` 已被删除。但据我所知,NODE_PATH 和 node_modules 方法应该仍然有效。您链接的答案中的错误说明了很多,它正在我的本地计算机上与 NODE_PATH 和节点 v0.6.7 一起使用。require.paths 错误(我没有得到但仅供参考):`错误:require.paths 已删除。使用 node_modules 文件夹,**或 NODE_PATH 环境变量**。` (4认同)