npx: getaddrinfo ENOENT raw.githubusercontent.com , unable to verify the first certificate

解决npx报错:getaddrinfoENOENT与SSL验证问题
文章讲述了用户在运行`npx`命令时遇到的错误,包括`getaddrinfoENOENT`和`unable_to_verify_the_first_certificate`。通过尝试配置host、使用开源加速工具WattToolkit(原名Steam+)以及调整Node.js的证书验证设置,最终解决了这些问题并提供了详细的操作步骤。

操作过程:

运行 npx 报错

PS xx> npx crawlee create book-crawler
node:internal/process/promises:288
            triggerUncaughtException(err, true /* fromPromise */);
            ^

Error: getaddrinfo ENOENT raw.githubusercontent.com
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:107:26) {
  errno: -4058,
  code: 'ENOENT',
  syscall: 'getaddrinfo',
  hostname: 'raw.githubusercontent.com'
}
  • 尝试找到 raw.githubusercontent.com 的IP,配置 host 失败后重试,失败!!!(原因分析:IP有误或者“网络情况太差”)
  • 尝试找开源的加速工具(原理忽略),正好steam++中有,下载最新版(已改名Watt Toolkit),安装完成后打开github加速,解决了上面的错误,但是出现下面新的错误:
node:internal/process/promises:288
            triggerUncaughtException(err, true /* fromPromise */);
            ^

Error: unable to verify the first certificate
    at TLSSocket.onConnectSecure (node:_tls_wrap:1540:34)
    at TLSSocket.emit (node:events:513:28)
    at TLSSocket._finishInit (node:_tls_wrap:959:8)
    at ssl.onhandshakedone (node:_tls_wrap:743:12) {
  code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE'
}
  • 尝试关闭 node 证书验证, npm config set strict-ssl false , 未解决问题。

原因分析:

getaddrinfo ENOENT raw.githubusercontent.com错误是因为域名无法解析IP,所以理论上通过配置host能解决,但实际上大部分情况可能不能,只能借助别的方法。如上面使用开源加速工具等。

unable to verify the first certificate 错误则是 node 安装或者执行包时需要验证请求者的CA证书,如果请求者的CA颁发机构不在信任列表里面,则会报错。(特别是自签证书)


解决方案:

继续在 Watt Toolkit 中操作:进入网络加速界面,首先安装证书,然后就可以打开证书文件夹,查看证书路径。然后,在node扩展证书配置中加入我们的证书路径(.crt或.cer后缀的文件)

打开证书文件夹
我这里是 C:\Users\Administrator\AppData\Local\Steam++\Plugins\Accelerator\SteamTools.Certificate.cer

具体配置命令如下:

$Env:NODE_EXTRA_CA_CERTS="C:\Users\Administrator\AppData\Local\Steam++\Plugins\Accelerator\SteamTools.Certificate.cer"

配置完成后,重新运行安装命令,这次可以成功安装了。

配置依据 https://playwright.dev/docs/browsers#install-behind-a-firewall-or-a-proxy

配置依据

非常抱歉,你指出的这个错误很重要: > ❗ `https://raw.githubusercontent.com/fullcalendar/fullcalendar/main/packages/core/main.css` 返回 `404 Not Found` 这说明 FullCalendar 官方仓库的结构已经发生了变化 &mdash;&mdash; **`main.css` 已经不在 `main` 分支的 `packages/core/` 目录下了**。 --- ## ✅ 正确获取 FullCalendar v6 的 CSS 文件 从 FullCalendar v6 开始,官方已经将 CSS 文件移动到了单独的构建流程中,**不再直接暴露在 GitHub 的 `main` 分支中**。 你可以通过以下几种方式获取 FullCalendar 的 CSS 文件: --- ### ✅ 方法一:使用官方发布的 CSS 文件(推荐) 你可以从官方发布的 npm 包中获取 CSS 文件,例如: 🔗 [https://unpkg.com/@fullcalendar/core@6.1.10/main.css](https://unpkg.com/@fullcalendar/core@6.1.10/main.css) 你只需替换版本号为你正在使用的版本即可。 #### ✅ 使用方式: 1. 打开浏览器访问: - [https://unpkg.com/@fullcalendar/core@6.1.10/main.css](https://unpkg.com/@fullcalendar/core@6.1.10/main.css) 2. 复制内容 3. 创建文件:`src/assets/fullcalendar.css` 4. 将复制的 CSS 内容粘贴进去 5. 在 `main.ts` 中导入: ```ts import '@/assets/fullcalendar.css' ``` --- ### ✅ 方法二:使用 CDN 直接引入 CSS(开发阶段推荐) 在 `index.html` 中添加: ```html <!-- index.html --> <head> ... <link href="https://cdn.jsdelivr.net/npm/fullcalendar@6.1.10/index.global.min.css" rel="stylesheet" /> </head> ``` 这种方式无需本地文件,适合开发阶段快速使用。 --- ### ✅ 方法三:查看 `node_modules` 中的 CSS(适用于你已经安装了 `@fullcalendar/core`) 如果你使用了 `@fullcalendar/vue3` 或其他组件,有时 CSS 会被打包到 dist 目录中。 你可以尝试运行: ```bash # 查看 @fullcalendar/core 的实际文件 npx pkgfiles @fullcalendar/core ``` 或者直接查看: ``` node_modules/@fullcalendar/core/main.css ``` 如果存在,可以直接导入: ```ts import '@fullcalendar/core/main.css' ``` --- ### 🔍 FullCalendar v6 的目录结构变化说明 | 路径 | 说明 | |------|------| | `@fullcalendar/core` | 核心逻辑包(不含 CSS) | | `@fullcalendar/daygrid` | 日视图插件 | | `@fullcalendar/timegrid` | 时间视图插件 | | `@fullcalendar/vue3` | Vue 3 集成组件(推荐使用) | | `fullcalendar` CDN 包 | 含完整 CSS 和 JS(推荐使用) | --- ## ✅ 总结 | 方式 | 是否推荐 | 说明 | |------|----------|------| | 使用 `unpkg.com` 获取 CSS | ✅ 推荐 | 可控、稳定 | | 使用 CDN 引入 CSS | ✅ 推荐(开发阶段) | 快速上手 | | 查看 node_modules | ⚠️ 可尝试 | 适合已经安装了完整包 | | GitHub raw 文件 | ❌ 不推荐 | 已经失效 | --- ##
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

singi2015

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值