gpt4 book ai didi

node.js - npm 嵌套依赖管理

转载 作者:搜寻专家 更新时间:2023-10-31 22:35:49 25 4
gpt4 key购买 nike

我对管理 npm 嵌套依赖项的最佳实践有疑问。

让我解释一下我的情况,请告诉我我做错了什么,或者解决这个问题的最佳方法是什么。

我正在 nodeenv 中使用 express.js 和 express-mongostore 运行一个应用程序。由于 nodeenv,我在全局范围内 npm-ing 所有内容,因此它们都位于 nenv/lib/node_modules 文件夹下。问题是,我正在尝试开发最前沿的 express.js,而 express-mongostore 已经有一段时间没有更新了。安装这两个模块后,我得到了这个文件夹结构。

nodeenv / lib / node_modules / express / node_modules / connect / ..
/
/ connect-mongodb / node_modules/ connect / ...

所以最终发生的是我有 2 个不同版本的连接。

我被烧毁了,因为 mongodb 存储生成的 cookie 和 session 中间件生成的 cookie 不同,因为它们指向 2 个不同的连接实用程序实现(一个调用调用实用程序的存储,另一个直接调用实用程序。不幸的是,它们在需要解析期间指向不同的文件)。这里的实际区别在于它们使用不同的算法对 cookie 进行签名。有一段时间,我的 session 在每次加载页面时都使自己失效,我花了很长时间才调试到这个级别。

我在 Internet 上阅读,这似乎应该是 npm 方式,而且是一件好事。这里的问题是,由于 express 依赖于 connect 中的一堆实用程序,而 connect-mongodb 继承了 connect 中的一些相同类,因此让它们成为不同的 repos 是有问题的。

我目前还有 2 个版本的 connect,我修补了其中一个,使其与另一个相同。很明显,这不是一个可持续的解决方案。在这种情况下,我应该如何进行依赖管理?

提前致谢!

最佳答案

您可以运行 npm dedupe将兼容的依赖项向上移动到树中。因此,假设 express 和 connect-mongodb 可以与相同版本的 connect 一起使用,您最终会得到这样一棵树:

nodeenv / lib / node_modules / express / ... 
/
/ connect-mongodb / ...
/
/ connect / ...

关于node.js - npm 嵌套依赖管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9679730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com