前端yarn工具打包时网络连接问题排查与解决

最近线上前端打包时提示 "There appears to be trouble with your network connection",以此文档记录下排查过程。

前端打包方式

  • docker启动临时容器打包,命令如下
bash 复制代码
docker run --rm -w /app -v `pwd`:/app alpine-node-common:v16.20-pro sh -c "yarn install && yarn build"
  • Dockfile如下:
dockerfile 复制代码
FROM alpine:3.16

RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories \
    && apk update && apk upgrade \
    && apk add --no-cache nodejs npm && npm install -g yarn \
    && npm config set registry https://registry.npmmirror.com \
    && yarn config set registry https://registry.npmmirror.com \
    && yarn config set ignore-engines true  \
    && yarn config set "strict-ssl" false -g \
    && rm -rf /var/cache/apk/* && rm -rf /tmp/*

CMD ["node"]

排查

  • 一开始想到是容器内的网络问题,容器的默认网络模式是桥接,遂改成主机模式,但仍然还是提示网络问题
bash 复制代码
docker run --rm --network=host -w /app -v `pwd`:/app alpine-node-common:v16.20-pro sh -c "yarn install && yarn build"
  • 然后就开始排查宿主机的问题,以为是容器内阿里云的镜像不生效,发现网络正常。
bash 复制代码
dev@localhost:~$ curl -I https://registry.npmmirror.com
HTTP/2 200 
server: Tengine
content-type: application/json; charset=utf-8
content-length: 1264
strict-transport-security: max-age=5184000
date: Fri, 20 Dec 2024 08:42:13 GMT
vary: Origin
....
  • 我又看了一遍报错信息,发现在yarn install的时候,读取的竟然是官方源地址: https://registry.yarnpkg.com,但我在dockerfile中修改了源为阿里云的镜像源。
bash 复制代码
yarn install v1.22.22
[1/4] Resolving packages...
warning unplugin-auto-import > magic-string > sourcemap-codec@1.4.8: Please use @jridgewell/sourcemap-codec instead
[2/4] Fetching packages...
info There appears to be trouble with your network connection. Retrying...
info There appears to be trouble with your network connection. Retrying...
info There appears to be trouble with your network connection. Retrying...
info There appears to be trouble with your network connection. Retrying...
info There appears to be trouble with your network connection. Retrying...
info There appears to be trouble with your network connection. Retrying...
info There appears to be trouble with your network connection. Retrying...
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
error Error: https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz: ETIMEDOUT
    at Timeout._onTimeout (/usr/local/lib/node_modules/yarn/lib/cli.js:142070:19)
    at listOnTimeout (node:internal/timers:559:17)
    at processTimers (node:internal/timers:502:7)
info There appears to be trouble with your network connection. Retrying...
info There appears to be trouble with your network connection. Retrying...

AI解惑

  • 我先看了项目的yarn.lock文件,发现也是官方源地址: https://registry.yarnpkg.com,此时报错差不多明白了。由于官方源站在国外,国内访问速度极慢,导致下载超市才会提示网络问题. 但我仍然不理解,设置了阿里云的源下载仍会去官方源地址下载,遂去问了AI。



解决

至此算是明白为何明明设置了阿里云镜像源,仍会打包失败了,遂让前端同事把yarn.lock文件的地址批量修改为阿里云镜像源地址即可,问题解决!

总结

关于yarn.lock文件中地址的访问流程:

  • 如果是第一次运行项目,yarn会读取yarn config list中设置的registry的地址来下载依赖,如果没设置则使用官方源地址。
  • 如果是已有项目安装依赖,有yarn.lock文件则直接读取,不会在读取yarn config list中设置的registry的地址了。
相关推荐
小HANN11 小时前
高可用架构实战:Keepalived+LVS(DR)+MariaDB主主集群搭建指南
linux·运维·服务器·经验分享
leoZ23111 小时前
AI+前端提效- 06 AI辅助调试排错:前端报错、白屏、兼容问题极速定位
前端·人工智能·chatgpt·状态模式·超分辨率重建·openvino·dreamfusion
Sylvia-girl12 小时前
【一】:Linux基础指令
linux·运维·服务器
ji_shuke12 小时前
Vue 3 使用 History 哨兵和 popstate 拦截浏览器返回
前端·javascript·vue.js·history·哨兵·popstate
KKKlucifer12 小时前
运维域与IT域融合——云网安全一体化运营体系建设
大数据·运维·安全
wxchyy12 小时前
手把手教你入门云计算(二):这些技术改变了世界,你也能轻松掌握
hadoop·阿里云·docker·云原生·华为云·云计算·运维开发
0+11112 小时前
Linux --基础IO
linux·运维·服务器
资深电气设计12 小时前
雕铣机主轴驱动升级趋势分析:变频器技术价值与选型逻辑探讨
运维
名字还没想好☜12 小时前
Prometheus 告警实战:写 alerting rules、用 Alertmanager 做路由分组与抑制
运维·前端·javascript·docker·kubernetes·prometheus
郭邯12 小时前
从零撸了一个 HTML 实体编解码工具,顺便聊聊我和 AI 结对编程的日常
前端