AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁 > 科技  > 軟件

十年老后端運行公司前端項目,連編譯都沒過去...問題出在哪?

來源: 責(zé)編: 時間:2023-09-28 10:09:35 439觀看
導(dǎo)讀事情是這樣的兄弟們,作為一個工作十年的老后端,最近兩個月沒事學(xué)了學(xué)前端,本來學(xué)之前還信心滿滿“前端你工程話再復(fù)雜能有些Java項目那些切面、各種Bean注解、maven復(fù)雜?一個月上手應(yīng)該沒問題”結(jié)果最近一直加班……兩個

事情是這樣的

兄弟們,作為一個工作十年的老后端,最近兩個月沒事學(xué)了學(xué)前端,本來學(xué)之前還信心滿滿“前端你工程話再復(fù)雜能有些Java項目那些切面、各種Bean注解、maven復(fù)雜?一個月上手應(yīng)該沒問題”QxC28資訊網(wǎng)——每日最新資訊28at.com

結(jié)果最近一直加班……兩個月了,才把Vue看了個大概,起初剛看前端的時候發(fā)現(xiàn)Y工程化咋用那么多工具和插件啊還是我后端香用go tools 或者Maven管理項目所有的依賴、插件、構(gòu)建和打包。QxC28資訊網(wǎng)——每日最新資訊28at.com

誒后來發(fā)現(xiàn)走了點彎路,人Vue框架里有一個vue.config.js能幫咱們統(tǒng)一管理webpack、gulp什么的這些工具在項目里的配置,這樣看來也還行吧。QxC28資訊網(wǎng)——每日最新資訊28at.com

所以就在上周,當(dāng)我厭倦了看各種Vue Demo項目,覺得這都太TM簡單了,還是得看看實戰(zhàn)代碼。抱著這個目的,我用一瓶東方樹葉腐化了我們業(yè)務(wù)的一個前端老哥,讓他給我開了個管理后臺項目的代碼權(quán)限。QxC28資訊網(wǎng)——每日最新資訊28at.com

下載下來項目后,我大概看了看項目的結(jié)構(gòu)和一些頁面組件的代碼,大概能看懂個百分之六七十的,于是我信心滿滿的準備編譯運行下這個項目,連給他提供接口那后端項目外都早早的在電腦上跑起來了,心想前后端項目都有,我這一下子不就閉環(huán)了嘛!QxC28資訊網(wǎng)——每日最新資訊28at.com

結(jié)果卻是...閉環(huán)還沒開始呢就結(jié)束了,直接第一步npm install就卡住了。不管怎么編譯都是下面這個錯:QxC28資訊網(wǎng)——每日最新資訊28at.com

Error: error:0308010C:digital envelope routines::unsupported     at new Hash (node:internal/crypto/hash:71:19)     at Object.createHash (node:crypto:133:10)     at module.export

這項目人家前端這周還有上線記錄呢?咋在我這連編譯都過不去,看報錯信息是算哈希的時候有問題,算了拿到ChatGPT里問一下。 剛好這周在VsCode上安了一個Copilot Chat,他們宣發(fā)里說是能幫開發(fā)者fix bug,試一下看看他們是不是吹牛皮呢。QxC28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片QxC28資訊網(wǎng)——每日最新資訊28at.com

微軟果真沒騙人Github Copilot Chat真的引入了GPT的Chat接口,連回答都跟ChatGPT一樣的片湯話。QxC28資訊網(wǎng)——每日最新資訊28at.com

沒辦法還是運用我善于搜索解決問題的內(nèi)功吧, .....直接把報錯粘貼到Google上看看,肯定有很多類似問題的解決方案。QxC28資訊網(wǎng)——每日最新資訊28at.com

尋找解決方案

經(jīng)過我在Google上的一番搜索和篩查后,終于在Stack Overflow上找到了同類問題的帖子,而且討論相當(dāng)激烈,帖子里有好幾十條回答,那看來是沒錯了在這肯定能找到答案。QxC28資訊網(wǎng)——每日最新資訊28at.com

首先咱們看一下提問者自己的描述:QxC28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片QxC28資訊網(wǎng)——每日最新資訊28at.com

I created the default IntelliJ IDEA React project and got this:QxC28資訊網(wǎng)——每日最新資訊28at.com

意思是用 IDEA 創(chuàng)建了一個React項目,然后就遇到了和我們相同的錯誤。提問者在這里用的是React,但是看這個錯誤信息里能看出來這個是NodeJS爆出來的,咱們先看看提問者最后采納的答案是什么?QxC28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片QxC28資訊網(wǎng)——每日最新資訊28at.com

回答者采用的方案是在項目的package.json里配置給啟動命令添加--openssl-legacy-provider選項,但是評論里就有人對這個方案提出了質(zhì)疑:QxC28資訊網(wǎng)——每日最新資訊28at.com

but note that --openssl-legacy-providermeans you are now almost certainly running with konwn insecure SSL, so this might mitigate the symptom, but it probable doesn't fix the underlying problem.QxC28資訊網(wǎng)——每日最新資訊28at.com

意思是這樣會讓項目運行在非安全SSL的環(huán)境下,這么干雖然能一時緩解項目問題的癥狀但是大概率沒有解決底層的根本問題。QxC28資訊網(wǎng)——每日最新資訊28at.com

看來這個回答雖然在提問者那里得到了認同,但是網(wǎng)友們覺得這個是治標(biāo)不治本,那么什么是導(dǎo)致這個問題的根本原因呢?咱們接著往下看看其他答案里怎么說的。QxC28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片QxC28資訊網(wǎng)——每日最新資訊28at.com

有位老哥過來剖析出現(xiàn)這個問題的真正原因了。QxC28資訊網(wǎng)——每日最新資訊28at.com

In Node.js v17, the Node.js developers closed a security hole in the SSL provider. This fix was a breaking change that corresponded with similar breaking changes in the SSL packages in NPM. When you attempt to use SSL in Node.js v17 or later without also upgrading those SSL packages in your package.json, then you will see this error.QxC28資訊網(wǎng)——每日最新資訊28at.com

意思是在NodeJS v17 版本,NodeJS的維護者修復(fù)了一個SSL的漏洞,這是一個破壞性變更,如果使用的NodeJS v17以上版本,但是項目的package.json里使用的是NPM上老版本的SSL庫的話就會導(dǎo)致這個問題。QxC28資訊網(wǎng)——每日最新資訊28at.com

怪不得我們公司前端運行項目沒事,他們電腦上的Node版本都是v15或者v16的。那我也不能降低我的NodeJS版本呀,我電腦上的是v18,我不想折騰降低我電腦上安裝的NodeJS的版本,再搜搜有沒有其他簡單的方案,粗暴點也沒事,畢竟我也不往人家前端項目里提代碼,我就摸魚時偷偷在自己電腦上學(xué)學(xué)而已。QxC28資訊網(wǎng)——每日最新資訊28at.com

在這么多回答里搜了一把 Vue.jsQxC28資訊網(wǎng)——每日最新資訊28at.com

其中有個回答說在vue.config.js 中添加下面這段代碼就能繞過那個錯誤。QxC28資訊網(wǎng)——每日最新資訊28at.com

const crypto = require('crypto');/** * The MD4 algorithm is not available anymore in Node.js 17+ (because of library SSL 3). * In that case, silently replace MD4 by the MD5 algorithm. */try {  crypto.createHash('md4');} catch (e) {  console.warn('Crypto "MD4" is not supported anymore by this Node.js version');  const origCreateHash = crypto.createHash;  crypto.createHash = (alg, opts) => {    return origCreateHash(alg === 'md4' ? 'md5' : alg, opts);  };}

我試了一把還真可以,但是看不明白這代碼啥意思,看著這個尖頭函數(shù)有點像Java的Lambda。這玩意好像是JavaScript ES6的語法,ES5的語法我都沒學(xué)更不可能學(xué)ES6了,直接問問Copilot Chat這代碼啥意思,為啥能起作用QxC28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片QxC28資訊網(wǎng)——每日最新資訊28at.com

具體為什么能起作用,大家點擊看大圖哈。不過這個答案下邊也有人評論說這個方案只是把問題繞過去了,最好還是修改SSL的配置,這個我就不修改了,我的要求是代碼能跑起來就行。QxC28資訊網(wǎng)——每日最新資訊28at.com

這里把Stack Overflow上的這個帖子也放這里,大家可以去感受下外國網(wǎng)友的討論氛圍。QxC28資訊網(wǎng)——每日最新資訊28at.com

https://stackoverflow.com/questions/69938570/QxC28資訊網(wǎng)——每日最新資訊28at.com

最后

最近學(xué)了點前端真是有點隔行如隔山的感覺了,不過發(fā)現(xiàn)問題解決問題的過程還是對自己有很多正反饋的,不然程序員也不會沒事學(xué)那么多東西了。QxC28資訊網(wǎng)——每日最新資訊28at.com

這里簡單記錄一下我遇到的這個問題,如果你也是想跨界學(xué)點前端,把網(wǎng)上開源或者公司里現(xiàn)成的項目拿到自己電腦上運行的時候可能也會有這個問題。QxC28資訊網(wǎng)——每日最新資訊28at.com

我一直覺得學(xué)一門語言的最直接的方式就是拿到現(xiàn)有的項目去學(xué),不然老看Demo也還是到不了能去開發(fā)項目做需求的級別。這么看來公司里項目雜也是有點好處的哈,是時候亮出我八年老Java,六年老Go,十年老PHP的身份了

本文鏈接:http://www.tebozhan.com/showinfo-26-11900-0.html十年老后端運行公司前端項目,連編譯都沒過去...問題出在哪?

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 記一次 .NET某新能源MES 非托管泄露

下一篇: 盤點 Go 語言的那些日志庫:你用了哪個?

標(biāo)簽:
  • 熱門焦點
Top