簡體   English   中英

NodeJs Package.json無限遞歸依賴

[英]NodeJs Package.json Infinite Recursive Dependency

這是我一直在思考的問題。 Node項目是否可能遇到遞歸和無限的包依賴? 我的意思是以下內容。

假設主應用程序在Package.json依賴項部分中列出了包A。 反過來,假設此包A依賴於包B.也就是說, node_modules/A/Package.json將在依賴關系部分中包含B.

現在,假設在一個瘋狂的事件組合中,包B依賴於另一個包C(C!= A),然而,它具有A作為其依賴性。 澄清,

node_modules/A/node_modules/B/package.json - contains C as dependency
node_modules/A/node_modules/B/node_modules/C/package.json - contains A as dependency

我的問題是雙重的。 首先,這種情況在實踐中是否可能? 其次,如何解決? 在我看來, npm install會發送此應用程序以進行無限循環安裝。

OP:Node項目是否可能遇到遞歸和無限的包依賴?

沒有。

記錄的算法中 ,隨着依賴樹的行走,“依賴關系將盡可能靠近頂部添加”。

該頁面上給出的示例表明,如果您的程序包A依賴於程序包B和程序包C,而程序包B也依賴於程序包C,程序包B中的依賴項將通過已為程序包A安裝的副本解析。

因此,在您的示例中,程序包C對A的依賴性將由主應用程序對A的依賴性來滿足。無需再次獲取它。

但是,當您開始遇到依賴於已經滿足的不同版本的依賴項的依賴項時,事情會變得有點棘手。 事實上,該頁面的下一部分專門討論了這個問題:

npm flat-out拒絕安裝已存在於包文件夾祖先樹中任何位置的任何名稱@版本

他們沒有給這個遞歸依賴性安裝的東西一些思考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM