认真调试node.js'无法找到模块xyz/abcd'

Off*_*rmo 8 module require node.js

我有Error: Cannot find module xyz/abcd错误.

是的,安装了所需的模块.

据module.require的伪代码在这里,它应该工作.

我试图require()深入了解为什么它找不到我的文件.我的节点调试器不会进入require().我已经尝试过这项strace / grep NOENT技术,但也没有成功.

知道如何解决令人讨厌的require()失败吗?

注意:以防万一:错误来自需要xyz/b的文件node_modules/xyz/a.它应该根据文档工作.

Off*_*rmo 15

通过调查更多,我想我发现了一个很好的技术:

export NODE_DEBUG=module
node my_script.js
Run Code Online (Sandbox Code Playgroud)

给出了有趣的痕迹:

looking for "/(...)/tests_init.js" in ["/home/(me)/.nave/installed/0.10.24/lib/node","/home/(me)/.node_modules","/home/(me)/.node_libraries","/home/(me)/.nave/installed/0.10.24/lib/node"]
Run Code Online (Sandbox Code Playgroud)

而顺便说一下,它表明节点根本没有在我认为的地方进行搜索.是时候调查......


[编辑]故事的结尾:

1)似乎节点没有处理好安装的模块npm link.require(...)有时无法从npm链接模块中选择文件.我不想进一步调查确切的错误条件,我只是得出结论,这npm link是非常脆弱的.

2)注意节点一直在寻找node_modules到当前工作目录的父目录!我发现我的应用程序的父文件夹中的模块有时会被选中!