Node v0.8.5 REPL:要求npm安装的模块时找不到模块

7

我有一个node应用程序,其中package.json文件声明了我的依赖关系。

我运行npm install将这些依赖项安装到本地的node_modules文件夹中,当我运行我的应用程序时,一切都很顺利。

问题在于当我尝试通过启动node REPL来扩展一些新功能时:

$ node           
> require('hubot');
Error: Cannot find module 'hubot'

在REPL中,它似乎不知道查找node_modules内部的内容。这是预期行为吗?还是hubot有问题?

1
你是从正确的目录运行REPL吗?你需要从项目的根目录(node_modules的父文件夹)运行它。 - rdrey
是的,与 package.json 和 node_modules 相同的目录。 - adamesque
@adamesque 你最终弄清楚这是为什么了吗?我在Node 5上也遇到了同样的问题,我相信这只是我犯了一些简单的错误。 - Joe
1
@Joe 没有,我从不这样做,而且我不再使用 hubot,所以这对我来说已经不是问题了。抱歉! - adamesque
1个回答

6
你可以设置环境变量NODE_DEBUG,以查看node尝试的路径:
export NODE_DEBUG=module
> require('toto')
Module._load REQUEST  toto parent: repl
looking for "toto" in ["/Users/laurent/repl/node_modules","/Users/laurent/node_modules","/Users/node_modules","/node_modules","/lusr/local/bin/node","/Users/laurent/.node_modules","/Users/laurent/.node_libraries","/usr/local/lib/node"]

REPL 只查看全局安装的 Node 模块,而不是仅安装在项目文件夹中的模块。因此这样做行不通。 - Binarian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接