我正在尝试在新服务器上运行我的节点应用程序,并且遇到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
process.env.NODE_PATH
我得到/development/framework
(这应该输出数组而不是字符串吗?)可能相关的其他信息:
此时我不知道还能做些什么。任何帮助将不胜感激。
答案 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