本地依賴庫的版本和庫依賴的版本不一致如何解決?

我用的 yarn v4 版本,所以以下教程命令都基于yarn

這里假設我報錯的庫名字叫 XXXXXXXX,依賴他的庫叫?AAAAAAAA

排查解決思路分析:

首先查看一下 XXXXXXXX 的依賴關系,執行

yarn why XXXXXXXX

首先我們要知道 yarn 自動做了庫的拆分,所以不同的庫依賴不同的版本的某個庫是互相隔離的,我們幾乎在任何時間都不需要check這個問題,除了以下幾種問題

如果看到類似的輸出,比如一個庫依賴項是 XXXXXXXX: ^0.0.1-beta.29,但他的?node_modules 下載的卻是 XXXXXXXX@0.0.1-local.8


└─ AAAAAAAA@npm:0.0.1└─XXXXXXXX@npm:0.0.1-local.8 (via npm:^0.0.1-bata.29)

那我們就先看下是不是本地有這個 cache 緩存

我們先看下項目里有沒有 .yarn/cache 這個文件,如果有就查看是不是命中了緩存

如果沒有這個目錄,先查看 cache 目錄在哪里

yarn config get cacheFolder

知道了緩存的目錄后,查看是否命中

ls .yarn/cache | grep XXXXXXXX

?我的輸出如下

XXXXXXXX-0.0.1-local.8-ddea0537de-10c0.zip

所以可以發現,我確實是因為命中了緩存才導致的問題,所以我們執行

yarn cache clean
yarn install

之后我發現還是沒有成功,于是檢查一下 yarn.lock 文件是否有鎖定的版本

cat ./yarn.lock | grep XXXXXXXX

我這里輸出如下,可以看到

    "XXXXXXXX": "npm:^0.0.1-bata.29"
"XXXXXXXX@npm:^0.0.1-bata.29":resolution: "XXXXXXXX@npm:0.0.1-local.8"

于是我執行

yarn cache clean
rm yarn.lock
yarn install

之后我發現還是沒有解決該問題

那么幾乎可以判斷為,不是緩存問題,而是 yarn registry(包源)里這個版本就叫做 0.0.1-local.8,并且它“偽裝”為 ^0.0.1-bata.29 的合法候選項!或者說他還沒有被注冊到 yarn regitstry 里。

也就是說,Yarn 從 遠程 registry(yarn私有源) 獲取到了一個叫:XXXXXXXX@0.0.1-local.8 的庫

但它被誤判為匹配:^0.0.1-beta.29

為什么 ^0.0.1-beta.29 能匹配 0.0.1-local.8

semver 標準里

  • ^0.0.1-beta.29 只允許 patch-level 的預發版本,如:

    • 0.0.1-beta.30

    • 0.0.1-rc.1

  • 如果 registry 中 0.0.1-local.8 是唯一匹配的預發版本,Yarn可能會選它,盡管它顯然不是正式版本。

這說明你的環境中:

🧨 0.0.1-local.8 是注冊在 yarn 或私有 registry 上的,并且是目前唯一可解的版本。

如何修復????

1.?強制指定明確版本(不是 semver 范圍)「我比較推薦這種寫法」

修改 package.json, 增加resolutions

"resolutions": {"XXXXXXXX": "0.0.1-beta.29"
}

?? 注意:必須是完整版本號,不要寫 ^0.0.1-beta.29,因為 Yarn 會再次去解析 semver 范圍,從而回到 local.8

或者固定下載源?

"resolutions": {"XXXXXXXX": "https://registry.npmjs.org/XXXXXXXX/-/XXXXXXXX-0.0.1-beta.29.tgz"
}

然后執行

rm yarn.lock
yarn install

2.?明確鎖定版本來源(需要使用官方 npm 源)

你可以臨時限制 registry,強制從 registry.npmjs.org 獲取(防止從私有源或本地鏡像拿到污染版本,比如你用的淘寶源):

在 .yarnrc.yml 中制定,yarn 一般用的自己的下載源 (https://registry.yarnpkg.com)因為yarn下載比較快,所以我不建議直接這樣改

npmRegistryServer: "https://registry.npmjs.org"

?然后執行

rm yarn.lock
yarn install

3. 如果還是不是你想要的版本,我們需要排查一下可用版本是否并沒有被發布

yarn npm info XXXXXXXX --fields versions

如果沒有 0.0.1-beta.29,那你只能:

  • 改用別的版本;

  • 或讓你團隊發布一個新的版本(例如 0.0.1-beta.30);

到此,我的問題解決,如果你還有其他問題,歡迎評論區留言提問?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/84989.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/84989.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/84989.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SQLiteStudio - 免費開源、輕量高效,跨平臺的 SQLite 數據庫管理工具,代替 Navicat for SQLite

管理 SQLite 數據庫就用這款軟件,真的早該摒棄破解和盜版的 Navicat 了。 SQLiteStudio 是一款專注于管理 SQLite 數據庫 的桌面軟件,用于瀏覽和編輯 SQLite 數據庫文件。軟件的作者是來自波蘭的開發者 Pawe? Salawa,他是一位擁有 20 年 Ja…

DeepSeek R1-0528 新開源推理模型(免費且快速)

DeepSeek推出了新模型,但這不是R2! R1-0528是DeepSeek的最新模型,在發布僅數小時后就在開源社區獲得了巨大關注。 這個悄然發布的模型DeepSeek R1-0528,已經開始與OpenAI的o3一較高下。 讓我來詳細介紹這次更新的新內容。 DeepSeek R1-0528 發布 DeepSeek在這次發布中采…

Opera Neon發布該公司首款“AI代理”瀏覽器

Opera 的瀏覽器產品組合今日迎來了新成員。Opera Neon 是該公司首款“AI 代理”瀏覽器,旨在“重新思考瀏覽器在代理網絡中的角色”。開發人員聲稱,Neon 能夠理解用戶的意圖,并利用 AI 驅動的功能將其轉化為行動。 Opera Neon 由三個主要部分…

網絡安全之Web滲透加解密

項目基本使用 準備環境:node.js python chrome npm install chrome-remote-interface pip install playwright playwright install chromium pip install mitmproxy ............... 第一步啟動cdp.js。 第二步使用python .\cdp_load.py vue_demo,連…

【VSCode-Qt】Docker遠程連接的項目UI文件在 VSCode 上無法預覽

Docker遠程連接的UI文件在 VSCode 上無法預覽,通常是因為 VSCode 通過遠程開發擴展(Remote - SSH/Docker)連接到 Docker 容器時,某些圖形化功能未正確配置或支持。以下是可能原因和解決方案: 原因分析 X11 轉發未配置…

【HW系列】—web組件漏洞(Strtus2和Apache Log4j2)

本文僅用于技術研究,禁止用于非法用途。 文章目錄 Struts2Struts2 框架介紹Struts2 歷史漏洞匯總(表格)Struts2-045 漏洞詳解 Log4j2Log4j2 框架介紹Log4j2 漏洞原理1. JNDI 注入2. 利用過程 Log4j2 歷史漏洞JNDILDAP 反彈 Shell 流程 Strut…

《深度關系-從建立關系到彼此信任》

陳海賢老師推薦的書,花了幾個小時,感覺現在的人與人之間特別缺乏這種深度的關系,但是與一個人建立深度的關系并沒有那么簡單,反正至今為止,自己好像沒有與任何一個人建立了這種深度的關系,那種雙方高度同頻…

sass基礎語法

Sass(Syntactically Awesome Style Sheets)是一種 CSS 預處理器,提供了比原生 CSS 更強大、更靈活的語法功能。它有兩種語法格式: Sass(縮進語法,.sass 文件)SCSS(CSS-like 語法&am…

【JavaWeb】基本概念、web服務器、Tomcat、HTTP協議

目錄 1. 基本概念1.1 基本概念1.2 web應用程序1.3 靜態web1.4 動態web 2. web服務器3. tomcat詳解3.1 安裝3.2 啟動3.3 配置3.3.1 配置啟動的端口號3.3.2 配置主機的名稱3.3.3 其他常用配置項日志配置數據源配置安全配置 3.4 發布一個網站 4. Http協議4.1 什么是http4.2 http的…

AI in Game,大模型能力與實時音視頻技術融合,交出AI應用新答卷

隨著AI的技術進步和工具普及,尤其是在這兩年的躍進之后,AI在游戲行業內的應用已經逐步由理念設想推向落地實踐。從蔡浩宇披露的AI新游《Whispers From The Star》到GDC上各大廠家呈現的游戲AI新亮點,我們看到了更多AI與游戲的結合方式&#x…

Android Studio 2022.2.1.20 漢化教程

查看Android Studio 版本 Android Studio Flamingo | 2022.2.1 Patch 2 下載:https://plugins.jetbrains.com/plugin/13710-chinese-simplified-language-pack----/versions/stable

常見的分詞算法

常見的分詞方法分類如下: 類型名稱說明優缺點1?? 基于空格/標點Word-level以空格或標點劃分,如 "Hello, world!" → ["Hello", ",", "world", "!"]?簡單,?無法處理新詞,詞…

湖北理元理律師事務所觀察:債務優化如何成為民生安全網

據央行2023年報告,中國家庭債務收入比達137.8%。面對債務高壓,湖北理元理律師事務所的實踐揭示:專業債務規劃的價值不僅是減負數字,更是構建社會穩定的微觀防線。 一、從“催收恐懼”到“主動管理”的轉變 該所服務數據顯示&…

服務器密碼安全運維解決新思路:憑據管理SMS+雙因素SLA認證結合的方案

引言:云服務器安全成本困局 在云計算滲透率突破60%的今天,中小企業正面臨嚴峻的安全悖論:某權威機構數據顯示,72%的云上數據泄露事件源于憑據管理不當,而傳統安全解決方案的采購成本往往超過中小企業年利潤的8%。這種…

Vision Transformer網絡結構

0.前言 參考CSDN大佬(太陽花的小綠豆)的代碼,梳理了一下vit的網絡結構,代碼地址如下: deep-learning-for-image-processing/pytorch_classification/vision_transformer at master WZMIAOMIAO/deep-learning-for-image-processing GitHub …

C++ 圖像處理庫 CxImage 簡介 (遷移至OpenCV)

文章目錄 核心功能特點局限性與替代方案常用方法構造函數從數組創建圖像訪問屬性訪問像素點Windows平臺支持 常用方法遷移至OpenCV CxImage 是一款功能強大的圖像處理類庫,主要用于 Windows 平臺的圖像處理任務。它支持多種圖像格式的加載、保存、編輯及特效處理&am…

【博客系統】博客系統第十一彈:從零開始在 Linux 系統上搭建 Java 部署環境并部署 Web 項目

搭建 Java 部署環境 JDK 1. 更新軟件包 apt 命令詳細介紹 sudo apt-get update2. 安裝 OpenJDK 查找 JDK 包 apt list | grep "jdk"安裝 JDK sudo apt install openjdk-17-jdk注意: 此處安裝的是 OpenJDK,OpenJDK 是一個開源版本的 JDK&am…

智能外呼系統中 NLP 意圖理解的工作原理與技術實現

智能外呼系統通過整合語音識別(ASR)、自然語言處理(NLP)和語音合成(TTS)等技術,實現了自動化的電話交互。其中,NLP 意圖理解是核心模塊,負責解析用戶話語中的語義和意圖&…

Sigma-Aldrich胰蛋白酶細胞解離方案速覽

Sigma-Aldrich_胰蛋白酶用于細胞培養 細胞解離是細胞傳代過程中的一個步驟,即細胞從預處理表面分離,形成懸浮液。這些懸浮液對于傳代培養重新接種、細胞計數分析和細胞增殖非常重要。有多種蛋白水解酶可用來從粘附基質上脫離細胞,胰蛋白酶就…