node.js - 认真调试node.js 'Cannot find module xyz/abcd'

标签 node.js module require

我遇到了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/

相关文章:

node.js - 将 Heroku Webhooks 与 Discord 连接

node.js - Nodejs 网站托管,不是基于 Express ? :)

python - 使用 Python 模块 main 函数进行验证测试是一个坏主意吗?

javascript - 如何在 dojo 路由器中显示 View ?

node.js - redis expireAt 在服务器中没有过期

arrays - 使用 MongoDB 更新对象的属性而不删除周围的属性

Node.js 缓冲区字符串序列化

TypeScript:默认值不是构造函数

ruby - 从文件外部访问实例

javascript - Node.js - 在运行时加载文件