捏麻麻的😡😡😡为什么很简单的前端问题网上搜到的答案质量居然这么差劲

94 天前
 shadowyue

事情的起因很简单,在我运行一个老的 vue 项目时候出现了报错:

error:0308010c:digital envelope routines::unsupported

经过简单的查询,我马上找到了根本原因:

我本地安装的 nodejs 版本太高了,在使用 OpenSSL 相关功能的时候有兼容性问题。 为此,nodejs 专门提供了一个命令行参数--openssl-legacy-provider , 只要启用了这个参数就没问题了。

重点来了,只要你在网上搜索error:0308010c:digital envelope routines::unsupported这个异常信息, 无论是 google 的还是百度的,给的解决方案都十分逆天,归类如下:

1.把高版本卸载掉,装低版本。简直是神仙的不能在神仙的解决方案。

如果回答者提了一嘴 nvm 还能算个正经方案。

以我多年的经验,不知道 nvm 的草台前端开发多的是。

2.在原始的启动命令 npm run dev 前面补充参数设置:

set NODE_OPTIONS=--openssl-legacy-provider && npm run dev

你要是觉得这个答案有简单又完美,我 TM 直接化身户晨风,安卓人安卓思维是吧,这是 window 的命令行才能用,你让苹果设备的同事怎么办??

ok,ok ,你继续搜索发现有质量更高的回答说,

Unix-like 系统在运行 npm run dev 之前执行 export NODE_OPTIONS=--openssl-legacy-provider

Windows 系统则先执行 set NODE_OPTIONS=--openssl-legacy-provider

哇哦,太棒了,简直完美,个屁。你让我每次运行项目之前都额外敲命令行吗??

这种不能配置化、代码化的解决方案,我要是明天来了十个新同事,

有用苹果的有用微软的,我是不是还得一个口头传授这个宝贵经验吗?

哎,其实写到这里我自己都心累了,有兴趣的 bro 你可以自己搜索试试。

我把我自己觉得最简单直接的解决方案写在这个帖子的最后面,欢迎交流。

我专门发这个帖子还有个目的,我在搜索的时候谷歌的 AI 也给了答案,

明显是参考了大量网络上的回答,都是我总结所述的方案,我实在是觉得,

AI 已经不知道烧掉了人类多少亿的资金了,这么小一个问题依然没有给出优质回答。

所以对 AI 感到焦虑的程序员朋友们,不必在意,AI 和我们一样有够草台的。

最后附上我觉得合理的解决方案:

我认为正确处理问题的思路应该是,既然这是 nodejs 的配置问题,

那我在运行这个项目启动 nodejs 的时候给增加所需要的参数就好了。

那我是怎么启动 nodejs 的?通过 npm ,那么 npm 执行 script 的时候,

有没有办法给 node 传参?顺着这个思路,查询 npm 的文档,

最终我认为最简单、最直接、而且能够配置化的解决方案是:

在你项目的.npmrc 文件中增加一行配置:

node-options=--openssl-legacy-provider

(什么?你说你的前端项目从来没用过.npmrc 配置文件,那这是另外一个值得吐槽的草台故事了)

6812 次点击
所在节点    程序员
78 条回复
AItsuki
93 天前
一样的,遇到复杂我问题都懒得问 AI ,不仅给你错误的答案,你纠正它还不行,它觉得它就是对的。等纠正到一定程度后又会失忆,真的是气的我脑淤血。AI 写点小工具,提供下思路还是可以的,其它的还是老老实实自己解决。
bowencool
93 天前
环境变量有一万种设置方法,只会个 export 我也是服了。

再说了,你这种问题的最佳解决方案是在项目中锁 nodejs 版本,fnm 自动切换了解一下(不喜欢用 nvm )
bowencool
93 天前
@bowencool npmrc 根本就不是用来设置环境变量的,cross-env 或 dotenv ( Node.js 还内置了)才是主流
canvascat
93 天前
老项目切 node 版本不是很正常吗,我这儿甚至有个项目只有 node<=10 才能运行😅
abc1310054026
93 天前
我反对,不符合 OP 期望的答案就不是优质答案。

网友回答的解决方法总归是出于好心,更何况解决方案确实有效,只是不符合 OP 想象中的优质回答。

再者,“草台班子” 这个就是大伙调侃。写代码的更加清楚一个系统必然会有大大小小的缺陷,你不能逮着个一个 bug 说整个系统就是 “草台班子”。
zhangsansama
93 天前
你问 gpt 也就 3 秒种的事情,AI 时代就不要用传统搜索啦
hsiafan
93 天前
明白了,OP 用的是 mac & OP 不会设置环境变量
Need4more
93 天前
这就是前端吗?

既然你通过搜索知道了添加环境变量,但是你不想敲命令启动项目,想配置化,

ok ,没问题。

但是谁告诉你环境变量只有这一种方式添加?

如果你有一点 shell 知识,就知道这样就能满足你的需求

"scripts": {
"serve": "NODE_OPTIONS=--openssl-legacy-provider npm run dev",
}

不懂 shell 也没关系,我只是个前端仔,现在不是有 ai 吗?

那看看 ai 怎么回答,这是我刚刚用最垃圾的百度给出的答案:
https://mr.baidu.com/r/1JB8DJGd4LS?f=ot&u=d422cfec2bb43b20

这不是解决了吗?
-----------
看的出来 op 作为一个前端,有基本的信息检索能力,但是基础知识不够牢固,ai 工具使用不够熟练,还谜之自大,
草台的是你,不是我们,不是 AI
MRG0
93 天前
版本问题 nvm 搞一下算了
shadowyue
93 天前
@Need4more #68
我勒个豆啊,捏麻麻我都不想回这个帖子了。大哥,你看完我帖子了吗?
你这 script 在 window 设备上试试生不生效?
我内容写的清清楚楚,我当然知道这种很简单,你只管用苹果的同事吗
maxxxxx
93 天前
给你的都是最直接最简单的解决方案,没什么问题。谁知道提问者有没有版本管理器,想不想设环境变量。
Need4more
93 天前
“以我多年的经验,不知道 nvm 的草台前端开发多的是。”

“AI 已经不知道烧掉了人类多少亿的资金了,这么小一个问题依然没有给出优质回答”

“什么?你说你的前端项目从来没用过.npmrc 配置文件,那这是另外一个值得吐槽的草台故事了”

合着就是没有前端比我懂 nvm ,没有人比我懂 ai ,没有前端比我懂 npm 呗。请问这些字里行间的优越感,来自哪里?

既然你已经知道了环境变量的平台问题,随便问哪个 ai 都能给出跨平台的解决方案,欸,就是不问,还要写篇文章把 ai 批判一番,把前端同行贬低一番。

捏麻麻的
liubaicai
93 天前
没觉得,我搜了下,感觉前面几个加上谷歌 ai 给的,都能解决这个问题,谈不上差劲。
Rache1
93 天前
@Linho1219

> 如果你觉得 StackOverflow 或者其他论坛上的回答不好,你应该在下面回帖,而不是抱怨完拍拍屁股走了。


有些时候,我真想去回帖,贴上自己的解决方案,奈何现在不少社区、论坛为了解决 spam ,新注册的用户不允许回答(印象中 StackOverflow 需要达到一定声望值才能回答问题,不然就只能创建回复,而不是回答)。Raddit 好像是每个板块的规定不一样,之前发了一条之后,过了几分钟就被机器人删了,然后给的理由是,新人前三天不能回帖,必须要三天后才行。更不用说国内这些,不少都要提供手机号后才能发言的。

这真的很无奈,其实哪怕就是 V 站,我大多数时候都只是看,少有回贴。

现在,也就 Github 可以直接回帖了
iShao
93 天前
@aloxaf #51
我也是这么觉得,写在命令里很直观。 而且从没在自己项目用过 npmrc ,只用过 node-version
wakarimasen
92 天前
把高版本卸载掉,装低版本才是合理方案。

理由 1 ,高版本设置 SSL 只能解决这个问题本身,属于头疼医头脚疼医脚。而之所以你会看到这个报错,本质上还是因为使用了和工程不匹配的开发套件版本。对于有规模的项目,仅仅启用这一个兼容项目,接下来你会遇到更多问题,比如 node-sass 安装不上。综上,使用匹配的版本才是合理方案。

理由 2 ,安装旧版本是一个包容的回答。如果提问者已经知晓 Node.js 版本,他懂他应该做什么。反之,重装并不会增加他的认知负担。没有为了必要解决一个问题而引入新的问题。当他有这个需求以后,再自行去检索多版本管理的方案也不迟。
DefoliationM
92 天前
卧了个天,逆天操作,为了个别不安全的项目写在 npmrc 里影响整个设备的安全性。临时想到最糙的方法写个 Makefile 就能解决,哥们是不是还没学到怎么写 Makefile ,整这么一通操作就为了设置个坏境变量。
v2048
92 天前
我用豆包直接搜索你的原文:

运行一个老的 vue 项目时候出现了报错:
error:0308010c:digital envelope routines::unsupported

给出了 4 个解决办法(本站不让贴这些内容),第 1 个答案就是你说的解决办法,2 、3 、4 简单浏览了一下看起来也是针对这个问题的处理。比搜索引擎更效率。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1160278

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX