我有Error: Cannot find module xyz/abcd
错误.
是的,安装了所需的模块.
据module.require的伪代码在这里,它应该工作.
我试图require()
深入了解为什么它找不到我的文件.我的节点调试器不会进入require().我已经尝试过这项strace / grep NOENT
技术,但也没有成功.
知道如何解决令人讨厌的require()
失败吗?
注意:以防万一:错误来自需要xyz/b的文件node_modules/xyz/a.它应该根据文档工作.
通过调查更多,我想我发现了一个很好的技术:
export NODE_DEBUG=module node my_script.js
给出了有趣的痕迹:
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"]
而顺便说一下,它表明节点根本没有在我认为的地方进行搜索.是时候调查......
[编辑]故事的结尾:
1)似乎节点没有处理好安装的模块npm link
.require(...)
有时无法从npm链接模块中选择文件.我不想进一步调查确切的错误条件,我只是得出结论,这npm link
是非常脆弱的.
2)注意节点一直在寻找node_modules到当前工作目录的父目录!我发现我的应用程序的父文件夹中的模块有时会被选中!