我遇到了Error: Cannot find module xyz/abcd
错误。
是的,所需的模块已安装。
根据module.require的伪代码here ,它应该有效。
我试图深入 require()
以了解为什么它找不到我的文件。我的 Node 调试器不会进入 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"]
顺便说一句,它表明 Node 根本没有在我认为的地方搜索。是时候调查了……
[编辑]故事的结尾:
1) Node 似乎没有很好地处理使用 npm link
安装的模块。 require(...)
有时无法从 npm 链接模块中选择文件。我不想进一步调查确切的错误情况,我只是得出结论,npm link
非常脆弱。
2) 当心 Node 一直在当前工作目录的父目录中寻找 node_modules !我发现我的应用程序的父文件夹中的模块有时会被选中!
关于node.js - 认真调试node.js 'Cannot find module xyz/abcd',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21056748/