精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

因為使用PeerDependencies而引發的bug

開發 項目管理
經過了一番調試后,終于找到了問題所在,本文就跟大家分享下這個問題從發現到解決的整個過程,歡迎各位感興趣的開發者閱讀本文。

[[423346]]

前言

前幾天有個人跟我反饋說,她fork了我右鍵菜單那個開源項目,一直無法打包成功。我尋思著應該不可能吧,當我嘗試打包時,果然翻車了??。

經過了一番調試后,終于找到了問題所在,本文就跟大家分享下這個問題從發現到解決的整個過程,歡迎各位感興趣的開發者閱讀本文。

排查問題

因為我電腦重裝過幾次系統,一些放在github上的項目我就沒有備份,我把項目(https://github.com/likaia/vue-right-click-menu-next/)重新clone到本地,安裝依賴項后運行了build命令,意想不到的事情發生了:它報錯了??

  1. ERROR  Failed to compile with 4 errors                                                                                                                                                                        11:02:26 AM 
  2.  
  3. error  in ./src/components/right-menu.vue 
  4.  
  5. Module parse failed: Unexpected token (1:0) 
  6. File was processed with these loaders: 
  7.  * ./node_modules/eslint-loader/index.js 
  8. You may need an additional loader to handle the result of these loaders. 

上述報錯的意思是找不到處理vue文件的相關loader,我就納悶了,這不可能啊,幾個月前插件寫好時還能打包的,現在咋就突然不能打包了呢。

可能是node版本的問題

難道是我node版本的問題?插件寫好到現在代碼一直沒動過,唯一變化的就是我升級了node版本,降級node版本太麻煩,于是我安裝了node版本管理工具n。

因為我的系統是macos,我可以直接用brew來安裝它,命令如下:

  1. brew install n 

如果你是windows系統,你可以通過npm包的形式來安裝它,命令如下:

  1. npm install -g n 

安裝完成后,我去找了下我寫這個項目時所發布的node版本v14.14.0,我們用n工具來安裝并切換它:

  1. n 14.14.0 

我們運行node --version命令看下是否成功。

一切準備就緒,我尋思著應該不會出現問題了吧??,結果運行后,我傻眼了,仍然報著同樣的錯誤??

node版本管理工具有挺多的,除了文中說的n還有nvm、npx,感興趣的開發者可自行了解。

發現貓膩(yarn.lock)

當我一籌莫展發呆時,突然發現目錄樹中的yarn.lock變色了,看來是有改動了,我尋思著不可能啊,我沒動package.json中的依賴項啊,怎么會發生變化呢?

重新創建個項目試試

既然lock文件發生了變化,那我重新創建個項目試試,把相關依賴項拷過去再打包看看。

我們繼續使用Vue CLI作為插件搭建環境,對此不熟悉的開發者請移步我的另一篇文章:使用CLI開發一個Vue3的npm庫

  1. vue create test-vue3-project 

項目創建完成后,我把相關文件拷貝了過去,修改了package.json中的build命令。

  1.   "build""vue-cli-service build --target lib --name vueRightMenuPlugin src/main.ts" 

運行命令后,它居然打包成功了??

找到問題

經過前面的一番折騰,創建了一個新的項目他就好了,那我比對下這倆項目有啥不同之處,那么問題就迎刃而解了。

經過比對后,我發現了package.json中的不同之處:

  1. "dependencies": { 
  2.    "core-js""^3.6.5"
  3.    "vue""^3.0.0" 
  4.  } 
  1. "peerDependencies": { 
  2.   "core-js""^3.6.5"
  3.   "vue""^3.0.0" 

區別就在于,vue和core-js這兩個包的位置,問題應該就出在這里了。

我們來驗證下吧,將dependencies中的那兩個包放到peerDependencies中,重新install下,再build看下。

不出意料,果然報錯了。

那么為啥我的項目之前能跑,現在卻沒法跑了,我想應該是因為之前改了后,我沒有重新install的緣故吧??。

解決問題

那么,既然找到問題了,我們反過來,把右鍵菜單的peerDependencies下的兩個包放到dependencies下,再看看問題能否得到解決。

當我滿懷信心的執行build命令后,結局卻讓我很失望。

是的,他換了個錯誤??

image-20210912132222990

看報錯是類型無法自動推導,這就很怪異了。那么就只能嘗試下我的三板斧了:

  • 重啟軟件
  • 重啟電腦
  • 刪除項目,重新clone,重新install依賴

前兩個嘗試過后,發現并無卵用,只好用了最后一個方法。

重新install后,執行了build命令,成功解決了這個問題。

為什么呢

問題是解決了,那么為什么要那樣做呢?接下來就帶大家深入研究下dependencies和peerDependencies。

dependencies

dependencies是package.json中的一個屬性,里面放運行代碼時所需的依賴,在install時這些包會被安裝,打包項目時,這里面的包也會被打包進去。

peerDependencies

peerDependencies也是package.json中的一個屬性,這個單詞翻譯過來是對等依賴的意思,這里面的包在install時并不會安裝,打包項目時,這里面的包也不會被打包進去。

兩者存在的問題

如果將依賴包放在dependencies下,那么當別人在他的項目中引入你的插件時,會出現下述情況:

  • 他項目里沒有引入你所需的依賴包,那么你插件所依賴的包會被安裝
  • 他項目里引入了你所需的依賴包:
    • 版本號一致,那么你所需的依賴包不會被安裝,插件將共用項目里的依賴包
    • 版本號不一致,那么你所需的依賴包就會被安裝,項目里就存在了兩套不同版本的依賴

版本號一致那還好,萬事大吉。版本號不一致時,你插件所依賴的那個包需要的功能與調用者項目里安裝的那個版本的包并無區別,那么調用者的項目將變得臃腫起來,又多安裝了一份依賴。

如果將依賴包放在peerDependencies下,對插件開發者是不友好的,會出現下述問題:

  • install的時候,所需的依賴不會安裝,使用ide開發時會報錯找不到相關依賴。

  • build的時候,因為依賴未安裝,導致無法打包(文章開頭提到的報錯)

這么看的話,peerDependencies這個屬性,好像沒啥用了。當然存在即合理,如果大家有什么更好的看法,歡迎在評論區留言討論。

解決方案

知道他們各自的優點和缺點后,我也就知道了如何解決這個問題。

既然dependencies中的依賴包只要和調用者的版本號一致,就不需要重新安裝依賴,那我們把它的版本號放開,給個范圍,這樣不就可以了??

在package.json中的版本號可以帶下述符號:

  • ~波浪號,匹配最新補丁版本號,即版本號的第三個數字,例如~3.0.0就會匹配3.0.x版本,將在3.1.0停止
  • ^插入符號,匹配次要的版本號,即版本號的第二個數字,例如^3.0.0就會匹配任何3.x.x版本,將在4.0.0停止
  • >、<、>=、<=比較運算符,匹配的就是這個區間的版本,例如>3.0.0 <= 3.1.4,就會匹配這個區間的版本號

如果不帶符號,那么它就是精確匹配。

 

本文中,用的是^3.0.0,滿足了我們插件的使用場景,因此不需要更改。

 

責任編輯:武曉燕 來源: 神奇的程序員
相關推薦

2011-06-24 10:52:50

OracleEF

2012-11-08 10:22:32

BUG軟件測試

2024-03-05 18:37:41

Rust編程語言代碼

2020-10-14 11:20:35

人工智能人臉識別技術

2021-01-30 10:58:29

React應用程序開發

2021-06-30 10:21:29

瀏覽器

2009-12-28 09:33:29

ChromeGoogle首頁

2010-06-01 23:41:06

IPv6網絡協議

2016-12-22 13:47:31

2022-12-09 09:43:41

前端測試

2010-11-02 13:01:26

2015-12-10 09:43:20

物聯網傳感器

2013-06-05 17:14:26

移動開發寫代碼編程

2014-04-30 12:01:06

開源開源貢獻

2012-11-01 16:56:06

2020-10-22 07:09:19

TCP網絡協議

2018-09-05 11:03:37

Memcache頻率限制

2024-12-24 12:10:00

代碼C++Lambda

2019-10-09 11:42:10

分布式取錢異步流程

2020-08-21 17:03:18

微軟WindowsWindows 10
點贊
收藏

51CTO技術棧公眾號

久久国产精品首页| 高清在线成人网| 最新亚洲国产精品| www.com久久久| 污污视频在线| 久久久综合网站| 国产成人久久久| 欧美肥妇bbwbbw| 岛国精品一区| 在线视频一区二区免费| 福利网在线观看| 性高潮久久久久久久久久| 三级在线观看一区二区| 欧美精品在线观看| 亚洲 小说 欧美 激情 另类| 澳门av一区二区三区| 亚洲欧美日韩国产成人精品影院 | 在线亚洲人成| 亚洲欧洲精品一区二区三区| 国产综合色一区二区三区| 久久精品久久久久久久| 久久性感美女视频| 亚洲精品国产精品国自产在线 | 日韩激情中文字幕| 九九视频这里只有精品| xxxx日本黄色| 日韩av资源网| 欧美一区二区福利视频| 日本999视频| 国产丝袜视频在线播放| 国产精品蜜臀在线观看| 精品国产乱码久久久久久郑州公司 | 555www成人网| 波多野结衣亚洲一区二区| 精品国产一区探花在线观看| 欧美精品一区二区三区高清aⅴ | 夜夜嗨av色综合久久久综合网 | 久久久久99精品国产片| 91国产在线播放| 中文字幕 自拍偷拍| 亚洲在线成人| 久久久久久国产精品美女| 国产精品精品软件男同| 欧美精品一区二区三区中文字幕| 亚洲精品99久久久久中文字幕| aaaaaaaa毛片| 国产精品777777在线播放| 欧美午夜精品久久久| 国产成人无码一二三区视频| 九色porny自拍视频在线播放| 亚洲码国产岛国毛片在线| 在线播放豆国产99亚洲| 搞黄视频免费在线观看| 97se亚洲国产综合在线| av一本久道久久波多野结衣| 国产99久一区二区三区a片| 激情综合网av| 亚洲一区二区自拍| a在线观看视频| 豆国产96在线|亚洲| 91pron在线| www.com欧美| 国产成人亚洲综合a∨婷婷图片| 亚洲xxx自由成熟| 国产男女裸体做爰爽爽| 国产精品一区二区在线看| 国产精品久久久久影院日本| 久久精品99北条麻妃| 日韩二区在线观看| 国产欧美日韩免费| 国产又粗又黄又爽的视频| 精品在线播放免费| 999视频在线观看| 日韩有码第一页| 91女神在线视频| 天堂资源在线亚洲资源| 免费黄色网址在线观看| 亚洲天堂成人网| 韩日视频在线观看| 外国成人直播| 91精品国产综合久久精品图片 | 精品一级视频| 欧美大片在线观看| 激情综合丁香五月| 欧美一区二区三区高清视频| 精品国偷自产在线视频| 久久综合综合久久| 亚洲综合丁香| 国产欧美精品在线| 欧美一级淫片aaaaaa| 久久久五月婷婷| 亚洲精品一区二区毛豆| 日本在线观看高清完整版| 欧美日韩国产激情| 天天碰免费视频| 91精品国产乱码久久久竹菊| 日韩国产精品一区| 看黄色录像一级片| aⅴ色国产欧美| 国产精品一区久久| 秋霞av鲁丝片一区二区| 亚洲国产精品成人综合| 欧美日韩激情四射| 精品3atv在线视频| 精品国产免费人成在线观看| 欧美18—19性高清hd4k| 欧美日韩国产色综合一二三四| 8050国产精品久久久久久| 精品一区二三区| 成人丝袜18视频在线观看| 日韩影院一区| 成入视频在线观看| 欧美午夜不卡在线观看免费| aaa黄色大片| 日韩在线视屏| 欧美影院在线播放| 亚洲福利在线观看视频| 国产精品天美传媒沈樵| 成熟丰满熟妇高潮xxxxx视频| 精品久久毛片| 亚洲男人的天堂网站| 黄色一级片在线| 毛片av一区二区三区| 精品国产aⅴ麻豆| 视频在线观看入口黄最新永久免费国产| 欧美性感美女h网站在线观看免费| 五月天婷婷在线观看视频| 不卡在线一区| 日韩免费av在线| 亚洲色图狠狠干| 亚洲国产一区二区三区青草影视 | 日韩三级视频在线播放| 狠狠狠色丁香婷婷综合激情| 日韩欧美亚洲日产国| 秋霞在线视频| 欧美一级淫片007| 日本二区三区视频| 日韩不卡免费视频| 蜜桃臀一区二区三区| 丁香花在线高清完整版视频| 日韩欧美一级二级| 国产成人av免费在线观看| 日本vs亚洲vs韩国一区三区二区| 久久国产精品久久精品国产| bl在线肉h视频大尺度| 日韩欧美成人一区| 久草资源在线视频| 国产成人精品亚洲777人妖| 日韩视频在线免费播放| 欧美系列精品| www日韩欧美| 国产欧美日韩成人| 亚洲男同1069视频| av影片在线播放| 欧美视频一区| 999视频在线观看| 6699嫩草久久久精品影院| 亚洲成人教育av| 日韩成人免费观看| 91女神在线视频| 最近免费中文字幕中文高清百度| 国产一区二区三区四区五区| 日韩**中文字幕毛片| 国产www.大片在线| 欧美久久久久久蜜桃| av成人免费网站| 国产不卡在线播放| 欧美,日韩,国产在线| 日韩精品丝袜美腿| 国产成人精品在线观看| 在线观看麻豆| 日韩视频免费直播| 日韩经典在线观看| 国产亚洲一区二区三区在线观看| 手机在线看福利| 91精品国产自产拍在线观看蜜| 亚洲自拍偷拍第一页| 国产在线美女| 亚洲一区第一页| 99久久精品国产成人一区二区 | 国产一区二区三区三区在线观看| 五月婷婷丁香在线| 亚洲欧美日韩国产成人精品影院 | 国产欧美日韩亚州综合 | 成人av网站在线| 免费观看日韩毛片| 欧美激情理论| 国产亚洲一区二区三区在线播放 | 成人激情在线观看| 蜜臀av国内免费精品久久久夜夜| 精品亚洲国产视频| 国产原创中文av| 午夜av一区二区| 免费一级黄色录像| 成人一级片在线观看| 日本va中文字幕| 国产精品va| 日韩欧美国产二区| 狠狠久久伊人| 国产人妖伪娘一区91| freexxx性亚洲精品| 国产午夜精品一区二区三区| 亚洲国产精品视频在线| 91国产精品成人| 国产一级做a爱免费视频| 国产欧美精品一区| 日韩女优在线视频| 久久99国产乱子伦精品免费| 日韩在线综合网| 欧美~级网站不卡| 日本一区二区三区免费观看| 国产精品欧美一区二区三区不卡| 啪一啪鲁一鲁2019在线视频| 国产精品va在线观看视色 | 好吊色视频一区二区三区| 日韩电影免费在线| 妞干网在线视频观看| 久久视频精品| 日韩视频在线观看国产| 好吊妞视频这里有精品| 成人国产精品日本在线| japanese23hdxxxx日韩| 97久久超碰福利国产精品…| 成人在线影视| 日韩在线高清视频| www 日韩| 亚洲午夜av久久乱码| 午夜视频免费看| 欧美成va人片在线观看| 91精品国产乱码久久久| 日本国产一区二区| 草久久免费视频| 五月婷婷激情综合网| 欧美日韩亚洲国产另类| 国产精品久久久久9999吃药| 日本少妇xxxxx| 国产亚洲欧美中文| 亚洲码无人客一区二区三区| 成人av电影免费在线播放| 日韩精品国产一区| 国产激情一区二区三区桃花岛亚洲| 亚洲va在线va天堂va偷拍| 男女性色大片免费观看一区二区 | 精品写真视频在线观看| 欧美综合在线观看视频| 久久精品二区三区| 久草青青在线观看| 老牛嫩草一区二区三区日本| 日韩网址在线观看| 久久伊人亚洲| 欧美黄色一级片视频| 老司机午夜免费精品视频| 久久精品一区二| 日本美女视频一区二区| 中文字幕av专区| 久久国产精品99精品国产| 午夜视频在线网站| 国产一区二区三区av电影| 视频区 图片区 小说区| 国产高清亚洲一区| 无码国产69精品久久久久网站 | 国产jjizz一区二区三区视频| 久久综合av免费| 亚洲AV无码成人精品区明星换面 | 欧美色网在线| 国产精品嫩草影院一区二区| 国产原创一区| 91麻豆蜜桃| 国产精品极品在线观看| 精品一卡二卡三卡四卡日本乱码 | xxx.xxx欧美| 2019日本中文字幕| 唐人社导航福利精品| 国产精品免费在线免费| 精品一区二区三区视频在线播放| 粉嫩av四季av绯色av第一区| 天天久久夜夜| 午夜老司机精品| 91成人精品视频| 免费看欧美黑人毛片| 欧美亚洲一区| 亚洲免费黄色录像| 高清在线不卡av| 一区二区三区伦理片| 最新高清无码专区| 成年免费在线观看| 欧美日韩不卡在线| 亚洲伦理在线观看| 国产一区二区三区在线视频 | 亚洲天堂日韩在线| 中文字幕在线亚洲精品| 亚洲性图久久| 男操女免费网站| 国产+成+人+亚洲欧洲自线| 亚洲成人黄色av| 一区二区三区欧美亚洲| 亚洲精品成人在线视频| 欧美高清视频一二三区 | 国产99久久精品| 日本黄色特级片| 亚洲黄一区二区三区| 国内自拍视频在线播放| 欧美一区二区视频观看视频| 三级视频在线| 欧美激情第1页| 日韩国产大片| 欧美日韩天天操| 黄色亚洲大片免费在线观看| 免费一级特黄录像| www.欧美色图| 欧洲第一无人区观看| 在线观看亚洲a| 人妻一区二区三区| 日韩中文字幕免费视频| 麻豆视频在线观看免费网站黄| 成人免费网站在线看| 久久91精品| 日本少妇高潮喷水视频| 国产91精品露脸国语对白| 欧美福利在线视频| 色综合网站在线| 天堂在线视频免费观看| 蜜臀久久99精品久久久久久宅男 | 男男做爰猛烈叫床爽爽小说 | 中文字幕中文字幕在线中一区高清 | 男女私大尺度视频| 国产一区二区伦理| 又色又爽的视频| 在线亚洲人成电影网站色www| 天天色综合久久| 欧美激情网站在线观看| 欧美成年网站| 久久久成人精品一区二区三区 | 精品久久久久久中文字幕| 99热这里精品| 久热精品视频在线观看| 久久婷婷五月综合色丁香| 日韩激情久久| 丝瓜av网站精品一区二区 | 国产伦精品一区二区三区千人斩| 男的插女的下面视频| 国产成人亚洲综合a∨婷婷图片| 午夜免费激情视频| 欧美一级国产精品| a级毛片免费观看在线| 国产在线精品成人一区二区三区| 成人久久综合| 一级做a免费视频| 好吊一区二区三区视频| 福利微拍一区二区| 日韩一区av| 日韩美女视频在线观看| 九色精品91| 日本新janpanese乱熟| 国产精品私人影院| 亚洲综合精品视频| 久久视频在线直播| 亚洲一区二区三区日本久久九| 香港三级日本三级a视频| 成人免费视频网站在线观看| 精品少妇爆乳无码av无码专区| 日韩欧美中文字幕公布| 丰满诱人av在线播放| 久久精品国产一区二区三区日韩| 国产日本精品| 乐播av一区二区三区| 欧美日韩亚洲综合| 中文字幕在线播放网址| 国产精品久久久久久久久婷婷| 日韩一级在线| 日本一道本视频| 91精品综合久久久久久| 国产在线xxx| 热舞福利精品大尺度视频| 久久国产三级精品| 国产一国产二国产三| 日韩电视剧免费观看网站| 亚洲高清黄色| 青青草视频国产| 91视视频在线直接观看在线看网页在线看| 国产精品第5页| 啊v视频在线一区二区三区| 综合激情久久| av丝袜天堂网| 伊人婷婷欧美激情| 国产女人在线视频| 2022国产精品| 媚黑女一区二区| 国产精品视频一区二区在线观看| 精品久久国产老人久久综合| 性欧美hd调教| 成年人深夜视频| 国产精品乱子久久久久| 黄色美女一级片| 国产日韩精品入口| 国产美女诱惑一区二区| 天天看天天摸天天操| 精品亚洲男同gayvideo网站| 综合欧美精品| 免费大片在线观看|