npm嵌套的依赖pipe理

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

让我解释一下我的情况,请告诉我我做错了什么,或者什么是最好的办法。

我在nodeenv中使用express.js和express-mongostore运行应用程序。 由于nodeenv,我在全局npm-everything,所以他们都在nenv / lib / node_modules文件夹下。 事情是,我正试图发展出口express.js express-mongostore有一段时间没有更新。 安装完这两个模块后,我得到这个文件夹结构。

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

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

我被烧了,因为由mongodb存储生成的cookie和会话中间件生成的cookie是不同的,因为它们指向了2个不同的连接实用程序(一个调用utils的商店,另一个直接调用utils),不幸的是,他们指向需要parsing期间的不同文件)。 这里的实际区别在于他们使用不同的algorithm对cookie进行签名。 有一段时间,我的会话每页都会使自己失效,花了很长时间才能debugging到这个级别。

我正在网上阅读,似乎这应该是npm的方式和一件好事。 这里的问题是,因为expression依赖于连接中的一堆utils和connect-mongodbinheritance连接中的一些相同的类,让他们不同的回购是有问题的。

我目前还有2个版本的连接,我修补了一个像其他。 很明显,这不是一个可持续的解决scheme。 在这种情况下,我应该如何进行依赖pipe理?

提前致谢!

您可以运行npm dedupe来将兼容的依赖关系移动到树上。 因此,假设express和connect-mongodb可以使用相同版本的连接,那么最终会得到如下的树:

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

您正在经历两个模块之间的基本不兼容问题,假设他们可以相互合作。

这不是NPM的缺点,也不是devise上的缺陷。 你将需要自己解决逻辑问题。