-1

任何引用任何全局模块的 require 语句都失败了。该模块是全局安装的(-g),命令行中的常规节点运行得很好。redis 失败,mongodb 失败等等。我没有找到任何配置选项。express 工作得很好,但不是其他模块。

例如在 sudo npm install -g redis 之后,nodeclipse 就找不到了。节点命令行,工作正常。

与普通用户一起运行。

4

2 回答 2

2

Node 包含的模块可能与人们预期的不同。 从节点文档:

如果传递给 require() 的模块标识符不是本地模块,并且不以'/'、'../'或'./'开头,则 node 从当前模块的父目录开始,并添加/node_modules,并尝试从该位置加载模块。

如果在那里没有找到它,那么它会移动到父目录,依此类推,直到到达树的根目录。

所以是的,当使用 -g 选项调用时,npm 确实安装到全局目录,但是该目录不会被节点读取,除非当前模块也位于同一目录或子目录中,只要其他模块都可以工作也由 npm -g 安装。

但是,如果 start .js 位于某个不同的目录中,则此方案不起作用。

所以,我认为为了让这个工作,添加到 npm 安装模块的 NODE_PATH 环境变量(例如 NODE_PATH=/usr/local/lib/node_modules)。这可以通过从 Run As ... -> Run Configurations -> Environment Tab 导航来完成

于 2014-01-16T00:15:03.807 回答
0

你只是'npm install'那些模块吗?

在您的问题中提供更多信息,因为无法说出您的环境有什么不同。

于 2013-12-03T09:09:16.197 回答