簡體   English   中英

npm依賴纏結的網絡-我的庫要求的軟件包版本不同於我的依賴項使用的版本

[英]npm dependency tangled web - my library requires a different version of a package than one of my dependencies uses

這必須是一種常見的情況,但是我沒有找到明確的答案。 這已經困擾了我幾天了。

場景

我建立了一個私有庫/依賴項,並在主項目的package.json中引用了它:

"my-shared-lib": "git+https://myuser:mypass@github.com/mygh/my-shared-lib.git#dev"

但是,我的主項目中的一個軟件包依賴於相同的軟件包(即“ uuid ”),但是版本不同。 不知道是哪個,也許是React或其他東西。 由於第三方依賴項的文件和文件夾結構不同,Webpack在構建時引發錯誤:

找不到./node_modules/my-github-lib/data/guid_id.js模塊中的錯誤:錯誤:無法解析'C:\\ MyProject \\ node_modules \\ my-github-lib \\ data'中的'uuid / v1' 'C:\\ MyProject \\ node_modules \\ my-github-lib \\ data'中的'uuid / v1'解析的請求是使用描述文件的模塊:C:\\ MyProject \\ node_modules \\ my-github-lib \\ package.json(相對路徑:./data)使用描述文件后,字段“瀏覽器”不包含有效的別名配置:C:\\ MyProject \\ node_modules \\ my-github-lib \\ package.json(相對路徑:./ data)解析為模塊外觀對於使用描述文件C:\\ MyProject \\ package.json的C:\\ MyProject中的模塊(相對路徑:。)使用描述文件C:\\ MyProject \\ package.json后的字段“瀏覽器”不包含有效的別名配置(相對路徑:。)使用描述文件:C:\\ MyProject \\ package.json(相對路徑:./uuid/v1)無擴展名字段“瀏覽器”不包含有效的別名配置C:\\ MyProject \\ uuid \\ v1不存在*字段“瀏覽器”不包含有效的 別名配置C:\\ MyProject \\ uuid \\ v1 *不存在.js字段“瀏覽器”不包含有效的別名配置C:\\ MyProject \\ uuid \\ v1.js不存在.jsx字段“瀏覽器”不存在沒有包含有效的別名配置C:\\ MyProject \\ uuid \\ v1.jsx不存在,因為目錄C:\\ MyProject \\ uuid \\ v1不存在C:\\ MyProject \\ node_modules \\ my-github-lib \\ data \\ node_modules不存在或不是目錄C:\\ MyProject \\ node_modules \\ my-github-lib \\ node_modules不存在或不是目錄C:\\ MyProject \\ node_modules \\ node_modules不存在或不是目錄C:\\ MyProject \\ projects \\ node_modules不存在或不是目錄C:\\ MyProject \\ node_modules不存在或不是目錄C:\\ Users \\ myuser \\ Documents \\ Projects \\ MyProject \\ node_modules不存在還是目錄C:\\ Users \\ myuser \\ Documents \\ Projects \\ node_modules不存在,或者目錄C:\\ Users \\ myuser \\ Documents \\ node_modules不存在或目錄C:\\ Users \\ myuser \\ node_modules不存在或 不是目錄C:\\ Users \\ node_modules不存在或不是目錄C:\\ node_modules不存在或不是使用描述文件在C:\\ MyProject \\ node_modules中查找模塊的目錄:C:\\ MyProject \\ package.json(相對路徑:./ node_modules)使用描述文件:C:\\ MyProject \\ package.json(相對路徑:./ node_modules)后,字段“瀏覽器”不包含有效的別名配置。 :\\ MyProject \\ node_modules \\ uuid \\ package.json(相對路徑:./ v1)沒有擴展名C:\\ MyProject \\ node_modules \\ uuid \\ v1不存在* C:\\ MyProject \\ node_modules \\ uuid \\ v1 *不存在存在.js C:\\ MyProject \\ node_modules \\ uuid \\ v1.js不存在.jsx C:\\ MyProject \\ node_modules \\ uuid \\ v1.jsx不存在,因為目錄C:\\ MyProject \\ node_modules \\ uuid \\ v1不存在不存在[C:\\ MyProject \\ uuid \\ v1] [C:\\ MyProject \\ uuid \\ v1 *] [C:\\ MyProject \\ uuid \\ v1.js] [C:\\ MyProject \\ uuid \\ v1.jsx] [C :\\\\ MyProject \\ uuid \\ v1] [C:\\ MyProject \\ node_modules \\ my-github-lib \\ data \\ node_modules] [C:\\ MyProject \\ node_modules \\ my-git hub-lib \\ node_modules] [C:\\ MyProject \\ node_modules \\ node_modules] [C:\\ MyProject \\ projects \\ node_modules] [C:\\ MyProject \\ node_modules] [C:\\ Users \\ myuser \\ Documents \\ Projects \\ MyProject \\ node_modules] [C:\\ Users \\ myuser \\ Documents \\ Projects \\ node_modules] [C:\\ Users \\ myuser \\ Documents \\ node_modules] [C:\\ Users \\ myuser \\ node_modules] [C:\\ Users \\ node_modules] [C:\\ node_modules] [C:\\ MyProject \\ node_modules \\ uuid \\ v1] [C:\\ MyProject \\ node_modules \\ uuid \\ v1 *] [C:\\ MyProject \\ node_modules \\ uuid \\ v1.js] [C:\\ MyProject \\ node_modules \\ uuid \\ v1 .jsx] [C:\\ MyProject \\ node_modules \\ uuid \\ v1]

這只是一個示例-它正在其他6個庫中發生,並且具有相同的錯誤消息。

我可以通過查看圖書館的副本來確認此沖突:

在此處輸入圖片說明 在此處輸入圖片說明

...以及我的主項目中安裝了什么:

在此處輸入圖片說明 在此處輸入圖片說明

顯然,我需要該依賴關系的兩個版本來滿足我的構建要求,但是強制其中一個版本都會破壞某些內容。

對此有什么優雅的解決方案?

這是一個Webpack錯誤,已在3月得到確認,但尚未修復。

https://github.com/webpack-contrib/css-loader/issues/447

提議的解決方法對我有用,它為生成錯誤中列出的每個軟件包添加了一行這樣的代碼:

node: {
    fs: "empty",
    net: "empty",
    tls: "empty"
}

不確定我是否喜歡這種解決方法。 如果碰巧遇到更多依賴關系,我會失去在客戶端使用這些軟件包的選擇,不是嗎?

暫無
暫無

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

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