首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >node.js中的重叠依赖关系

node.js中的重叠依赖关系
EN

Stack Overflow用户
提问于 2011-12-20 07:01:59
回答 3查看 299关注 0票数 1

如果我需要一个已经安装为另一个模块的子依赖项的npm模块,我应该仍然使用npm安装它吗?

例如,kue需要redis,所以red is与kue一起安装,例如npm install kue。

代码语言:javascript
复制
/node_modules/kue/node_modules/redis

我是否应该同样安装redis,因此npm安装redis?

代码语言:javascript
复制
/node_modules/redis/

或者有没有一种方法可以在我的require语句中添加对从kue安装的redis的引用?

代码语言:javascript
复制
require("/node_modules/kue/node_modules/redis")

而不是

代码语言:javascript
复制
require ("redis")

还是有更好的方法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-20 09:13:37

这是一个普遍的经验法则:

如果您在应用程序的源代码中使用require('module-name'),则应该将module-name列为依赖项。将依赖项的依赖项视为不透明的实现细节,不要关心它们。

这允许kue依赖于与您的应用程序不同的redis模块版本,或者将其实现完全切换为不同的模块。所有这些都不会影响您的应用程序。

Node的模块系统不同于“传统的”模块系统(例如Ruby),因为同一模块的多个版本可以在同一进程中加载,而不会导致冲突。一开始感觉有点不对劲,但只要照做就行了,你很快就会看到好处的。我怀疑,随着社区进一步探索Node的这一方面,我们将看到一些有趣的项目出现,以利用它。

票数 0
EN

Stack Overflow用户

发布于 2011-12-20 08:37:33

只需在本地安装redis即可。

如果你想要一个不同版本的redis,而不是安装了kue的版本,该怎么办?当您更新kue的版本时,redis的版本突然发生了变化,该怎么办?

只要require(module)像预期的那样工作,你就不应该关心node_modules的内容。节省一些kbs的源代码是不值得这样做的。

票数 0
EN

Stack Overflow用户

发布于 2011-12-20 15:09:11

您不应该关心自己安装模块和依赖项,让NPM为您做这件事。

例如,只安装一个Redis并不是很好,因为Kue (或其他依赖于Redis的模块)可能需要特定的版本,而其他一些模块可能需要另一个版本。

NPM为您做所有的工作,只需npm install package,然后在您的代码中使用require('package')。正如@Raynos所说,节省一些kbs的代码并不是一笔很大的交易,甚至可能会让你陷入麻烦。

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

https://stackoverflow.com/questions/8568724

复制
相关文章

相似问题

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