unpkg 淘宝registry 不能使用的问题

以前修改过一个unpkg,可以支持本地私服部署,今天有一位网友在使用淘宝registry 的时候发现有问题,会有重定向的问题
造成不能使用

原因分析

尽管我们配置的是 registry.npmmirror.com 但是对于内容的下载npmmirror 会使用另外一个域名cdn.npmmirror.com 对于npm 的tar.gz
进行下载造成有问题(核心是node 的https 模块不支持重定向请求)

解决方法

目前解决方法很简单,使用了一个对于http 请求支持重定向处理的包follow-redirects,直接替换默认的https 模块就可以了

  • 参考代码
import https from 'https';
修改为
import {https} from 'follow-redirects';

docker 版本参考使用

  • docker-compose 文件
version: "3"
services: 
    unpkg:
      image: dalongrong/unpkg:http-env-v2
      environment: 
      - NPM_REGISTRY_URL=https://registry.npmjs.org
      ports: 
      - "8080:8080"

说明

目前docker镜像也已经push 到dockerhub 了,可以直接使用dalongrong/unpkg:http-env-v2,同时unpkg 原始代码也有一些调整,直接基于了
unpkg 最新的进行了修改,对于docker 镜像同时修改了基础镜像为node:18.19.1-alpine3.19,node 低版本有一个很大的安全问题

参考资料

https://github.com/rongfengliang/unpkg
https://www.npmjs.com/package/follow-redirects
https://hub.docker.com/repository/docker/dalongrong/unpkg/general
https://github.com/rongfengliang/unpkg/blob/master/modules/utils/npm.js#L2
https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V20.md#20.11.1

posted on 2024-02-22 14:51  荣锋亮  阅读(14)  评论(0编辑  收藏  举报

导航