当前位置:首页 > 科技  > 软件

十年老后端运行公司前端项目,连编译都没过去...问题出在哪?

来源: 责编: 时间:2023-09-28 10:09:35 283观看
导读事情是这样的兄弟们,作为一个工作十年的老后端,最近两个月没事学了学前端,本来学之前还信心满满“前端你工程话再复杂能有些Java项目那些切面、各种Bean注解、maven复杂?一个月上手应该没问题”结果最近一直加班……两个

事情是这样的

兄弟们,作为一个工作十年的老后端,最近两个月没事学了学前端,本来学之前还信心满满“前端你工程话再复杂能有些Java项目那些切面、各种Bean注解、maven复杂?一个月上手应该没问题”vir28资讯网——每日最新资讯28at.com

结果最近一直加班……两个月了,才把Vue看了个大概,起初刚看前端的时候发现Y工程化咋用那么多工具和插件啊还是我后端香用go tools 或者Maven管理项目所有的依赖、插件、构建和打包。vir28资讯网——每日最新资讯28at.com

诶后来发现走了点弯路,人Vue框架里有一个vue.config.js能帮咱们统一管理webpack、gulp什么的这些工具在项目里的配置,这样看来也还行吧。vir28资讯网——每日最新资讯28at.com

所以就在上周,当我厌倦了看各种Vue Demo项目,觉得这都太TM简单了,还是得看看实战代码。抱着这个目的,我用一瓶东方树叶腐化了我们业务的一个前端老哥,让他给我开了个管理后台项目的代码权限。vir28资讯网——每日最新资讯28at.com

下载下来项目后,我大概看了看项目的结构和一些页面组件的代码,大概能看懂个百分之六七十的,于是我信心满满的准备编译运行下这个项目,连给他提供接口那后端项目外都早早的在电脑上跑起来了,心想前后端项目都有,我这一下子不就闭环了嘛!vir28资讯网——每日最新资讯28at.com

结果却是...闭环还没开始呢就结束了,直接第一步npm install就卡住了。不管怎么编译都是下面这个错:vir28资讯网——每日最新资讯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,他们宣发里说是能帮开发者fix bug,试一下看看他们是不是吹牛皮呢。vir28资讯网——每日最新资讯28at.com

图片图片vir28资讯网——每日最新资讯28at.com

微软果真没骗人Github Copilot Chat真的引入了GPT的Chat接口,连回答都跟ChatGPT一样的片汤话。vir28资讯网——每日最新资讯28at.com

没办法还是运用我善于搜索解决问题的内功吧, .....直接把报错粘贴到Google上看看,肯定有很多类似问题的解决方案。vir28资讯网——每日最新资讯28at.com

寻找解决方案

经过我在Google上的一番搜索和筛查后,终于在Stack Overflow上找到了同类问题的帖子,而且讨论相当激烈,帖子里有好几十条回答,那看来是没错了在这肯定能找到答案。vir28资讯网——每日最新资讯28at.com

首先咱们看一下提问者自己的描述:vir28资讯网——每日最新资讯28at.com

图片图片vir28资讯网——每日最新资讯28at.com

I created the default IntelliJ IDEA React project and got this:vir28资讯网——每日最新资讯28at.com

意思是用 IDEA 创建了一个React项目,然后就遇到了和我们相同的错误。提问者在这里用的是React,但是看这个错误信息里能看出来这个是NodeJS爆出来的,咱们先看看提问者最后采纳的答案是什么?vir28资讯网——每日最新资讯28at.com

图片图片vir28资讯网——每日最新资讯28at.com

回答者采用的方案是在项目的package.json里配置给启动命令添加--openssl-legacy-provider选项,但是评论里就有人对这个方案提出了质疑:vir28资讯网——每日最新资讯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.vir28资讯网——每日最新资讯28at.com

意思是这样会让项目运行在非安全SSL的环境下,这么干虽然能一时缓解项目问题的症状但是大概率没有解决底层的根本问题。vir28资讯网——每日最新资讯28at.com

看来这个回答虽然在提问者那里得到了认同,但是网友们觉得这个是治标不治本,那么什么是导致这个问题的根本原因呢?咱们接着往下看看其他答案里怎么说的。vir28资讯网——每日最新资讯28at.com

图片图片vir28资讯网——每日最新资讯28at.com

有位老哥过来剖析出现这个问题的真正原因了。vir28资讯网——每日最新资讯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.vir28资讯网——每日最新资讯28at.com

意思是在NodeJS v17 版本,NodeJS的维护者修复了一个SSL的漏洞,这是一个破坏性变更,如果使用的NodeJS v17以上版本,但是项目的package.json里使用的是NPM上老版本的SSL库的话就会导致这个问题。vir28资讯网——每日最新资讯28at.com

怪不得我们公司前端运行项目没事,他们电脑上的Node版本都是v15或者v16的。那我也不能降低我的NodeJS版本呀,我电脑上的是v18,我不想折腾降低我电脑上安装的NodeJS的版本,再搜搜有没有其他简单的方案,粗暴点也没事,毕竟我也不往人家前端项目里提代码,我就摸鱼时偷偷在自己电脑上学学而已。vir28资讯网——每日最新资讯28at.com

在这么多回答里搜了一把 Vue.jsvir28资讯网——每日最新资讯28at.com

其中有个回答说在vue.config.js 中添加下面这段代码就能绕过那个错误。vir28资讯网——每日最新资讯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);  };}

我试了一把还真可以,但是看不明白这代码啥意思,看着这个尖头函数有点像Java的Lambda。这玩意好像是JavaScript ES6的语法,ES5的语法我都没学更不可能学ES6了,直接问问Copilot Chat这代码啥意思,为啥能起作用vir28资讯网——每日最新资讯28at.com

图片图片vir28资讯网——每日最新资讯28at.com

具体为什么能起作用,大家点击看大图哈。不过这个答案下边也有人评论说这个方案只是把问题绕过去了,最好还是修改SSL的配置,这个我就不修改了,我的要求是代码能跑起来就行。vir28资讯网——每日最新资讯28at.com

这里把Stack Overflow上的这个帖子也放这里,大家可以去感受下外国网友的讨论氛围。vir28资讯网——每日最新资讯28at.com

https://stackoverflow.com/questions/69938570/vir28资讯网——每日最新资讯28at.com

最后

最近学了点前端真是有点隔行如隔山的感觉了,不过发现问题解决问题的过程还是对自己有很多正反馈的,不然程序员也不会没事学那么多东西了。vir28资讯网——每日最新资讯28at.com

这里简单记录一下我遇到的这个问题,如果你也是想跨界学点前端,把网上开源或者公司里现成的项目拿到自己电脑上运行的时候可能也会有这个问题。vir28资讯网——每日最新资讯28at.com

我一直觉得学一门语言的最直接的方式就是拿到现有的项目去学,不然老看Demo也还是到不了能去开发项目做需求的级别。这么看来公司里项目杂也是有点好处的哈,是时候亮出我八年老Java,六年老Go,十年老PHP的身份了

本文链接:http://www.28at.com/showinfo-26-11900-0.html十年老后端运行公司前端项目,连编译都没过去...问题出在哪?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

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

下一篇: 盘点 Go 语言的那些日志库:你用了哪个?

标签:
  • 热门焦点
  • 一加Ace2 Pro官宣:普及16G内存 引领24G

    一加Ace2 Pro官宣:普及16G内存 引领24G

    一加官方今天继续为本月发布的新机一加Ace2 Pro带来预热,公布了内存方面的信息。“淘汰 8GB ,12GB 起步,16GB 普及,24GB 引领,还有呢?#一加Ace2Pro#,2023 年 8 月,敬请期待。”同时
  • 对标苹果的灵动岛 华为带来实况窗功能

    对标苹果的灵动岛 华为带来实况窗功能

    继苹果的灵动岛之后,华为也在今天正式推出了“实况窗”功能。据今天鸿蒙OS 4.0的现场演示显示,华为的实况窗可以更高效的展现出实时通知,比如锁屏上就能看到外卖、打车、银行
  • 如何使用JavaScript创建一只图像放大镜?

    如何使用JavaScript创建一只图像放大镜?

    译者 | 布加迪审校 | 重楼如果您曾经浏览过购物网站,可能遇到过图像放大功能。它可以让您放大图像的特定区域,以便浏览。结合这个小小的重要功能可以大大改善您网站的用户体验
  • 共享单车的故事讲到哪了?

    共享单车的故事讲到哪了?

    来源丨海克财经与共享充电宝相差不多,共享单车已很久没有被国内热点新闻关照到了。除了一再涨价和用户直呼用不起了。近日多家媒体再发报道称,成都、天津、郑州等地多个共享单
  • 中国家电海外掘金正当时|出海专题

    中国家电海外掘金正当时|出海专题

    作者|吴南南编辑|胡展嘉运营|陈佳慧出品|零态LT(ID:LingTai_LT)2023年,出海市场战况空前,中国创业者在海外纷纷摩拳擦掌,以期能够把中国的商业模式、创业理念、战略打法输出海外,他们依
  • 四年持续更迭坚持探索行业无人之境,HarmonyOS 4带来五大升级多项创新

    四年持续更迭坚持探索行业无人之境,HarmonyOS 4带来五大升级多项创新

    除了华为每年新发布的旗舰手机系列,上亿花粉更加期待鸿蒙系统每次的跨版本大更新。8月4日,HarmonyOS 4于HDC 2023正式发布,这也是该系统历经四年的再
  • 华为发布HarmonyOS 4:更好玩、更流畅、更安全

    华为发布HarmonyOS 4:更好玩、更流畅、更安全

    在8月4日的华为开发者大会2023(HDC.Together)大会上,HarmonyOS 4正式发布。自2019年发布以来,HarmonyOS一直以用户为中心,经历四年多的发展HarmonyOS已
  • 2299元起!iQOO Pad开启预售:性能最强天玑平板

    2299元起!iQOO Pad开启预售:性能最强天玑平板

    5月23日,iQOO如期举行了新品发布会,除了首发安卓最强旗舰处理器的iQOO Neo8系列新机外,还在发布会上推出了旗下首款平板电脑——iQOO Pad,其搭载了天玑
  • 滴滴违法违规被罚80.26亿 共存在16项违法事实

    滴滴违法违规被罚80.26亿 共存在16项违法事实

    滴滴违法违规被罚80.26亿 存在16项违法事实开始于2121年7月,历经一年时间,网络安全审查办公室对“滴滴出行”网络安全审查终于有了一个暂时的结束。据“网信
Top