首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >npm嵌套依赖管理

npm嵌套依赖管理
EN

Stack Overflow用户
提问于 2012-03-13 15:12:10
回答 2查看 1.2K关注 0票数 6

我有一个关于管理npm嵌套依赖的最佳实践的问题。

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

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

代码语言:javascript
复制
nodeenv / lib / node_modules / express / node_modules / connect / ..
                             /
                             / connect-mongodb / node_modules/ connect / ...

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

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

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

我目前仍然有两个版本的连接,我修补了一个,使之与另一个类似。很明显,这不是一个可持续的解决方案。在这种情况下,我应该如何进行和处理依赖项管理?

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-09 03:45:20

您可以运行npm dedupe在树中向上移动兼容的依赖项。因此,假设express和connect-mongodb可以使用相同版本的connect,您将得到如下所示的树:

代码语言:javascript
复制
nodeenv / lib / node_modules / express / ... 
                             /
                             / connect-mongodb / ...
                             /
                             / connect / ...
票数 3
EN

Stack Overflow用户

发布于 2012-05-07 06:12:37

你正在经历两个模块之间的根本不兼容,这两个模块假设它们可以相互协作。

这不是NPM的错,也不是它的设计缺陷。你需要自己解决逻辑问题。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9679730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档