news 2026/6/12 7:18:33

pkg 手动下载依赖并解决打包时网络下载失败(Win / macOS)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
pkg 手动下载依赖并解决打包时网络下载失败(Win / macOS)

在使用pkg将 Node.js 项目打包成可执行文件时,经常会遇到下面这些问题:

  • ❌ 打包过程中卡在Downloading Node.js binary
  • ❌ 国内网络访问 GitHub / npm 镜像慢或失败
  • ❌ pkg-fetch 自动下载失败,导致无法打包

其实pkg 支持手动下载并放入缓存目录,本文将详细介绍Windows 和 macOS 下 pkg 的手动依赖解决方案


一、pkg 打包原理简述

pkg 在打包时,会自动下载对应版本的Node.js 运行时二进制文件,并缓存到本地目录:

  • Windows:

    C:\Users\<用户名>\.pkg-cache
  • macOS / Linux:

    ~/.pkg-cache

缓存文件命名格式示例:

fetched-v16.16.0-win-x64 fetched-v16.16.0-macos-x64 fetched-v16.16.0-linux-x64

只要缓存存在,pkg 不会再联网下载


二、pkg-fetch 官方下载地址

pkg 使用的 Node 二进制由pkg-fetch提供,官方 Release 地址:

https://github.com/vercel/pkg-fetch/releases

⚠️ 国内访问较慢,建议使用代理或提前下载


三、Windows:pkg 手动放置缓存(Win x64)

1️⃣ pkg 缓存目录

C:\Users\Administrator\.pkg-cache

pkg 当前常用缓存版本目录:

C:\Users\Administrator\.pkg-cache\v3.4

2️⃣ 查看已有缓存

PSC:\Users\Administrator\.pkg-cache\v3.4>ls

示例输出:

目录: C:\Users\Administrator\.pkg-cache\v3.4 Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2023/8/27 15:15 34778624 fetched-v16.16.0-win-x64

说明:

  • v3.4:pkg-fetch 版本
  • fetched-v16.16.0-win-x64:Node v16.16.0 的 Windows 64 位运行时

3️⃣ 手动下载 Node 二进制

从 pkg-fetch Release 中下载对应文件,例如:

node-v16.16.0-win-x64

重命名为:

fetched-v16.16.0-win-x64

然后放入目录:

C:\Users\Administrator\.pkg-cache\v3.4\

4️⃣ Git for Windows 离线包(补充)

如果 pkg 构建过程中依赖 Git,可手动下载 Git 安装包:

https://cdn.npmmirror.com/binaries/git-for-windows/v2.24.0.6.windows.1/Git-2.24.0.6-64-bit.exe

避免构建脚本中 Git 下载失败。


四、macOS:pkg 手动缓存配置

1️⃣ pkg 缓存目录

cd/Users/用户名/.pkg-cache/v3.4

2️⃣ 查看缓存内容

tree

示例输出:

. ├── fetched-v14.20.0-macos-x64.downloading ├── fetched-v16.16.0-linux-x64 ├── fetched-v16.16.0-macos-x64 ├── fetched-v16.16.0-macos-x64-signed ├── fetched-v16.16.0-win-x64 ├── fetched-v18.5.0-macos-x64 └── fetched-v18.5.0-macos-x64-signed 1 directory, 7 files

说明:

文件名说明
macos-x64macOS Intel
linux-x64Linux
win-x64Windows
*-signedApple 官方签名版本
.downloading未完成下载(可删除)

3️⃣ 手动放置 macOS Node 二进制

下载对应版本后:

mvnode-v18.5.0-macos-x64 fetched-v18.5.0-macos-x64

放入:

~/.pkg-cache/v3.4/

如果存在.downloading文件,可直接删除


五、指定 Node 版本打包(强烈推荐)

在 pkg 打包时显式指定 Node 版本,避免自动下载其他版本:

pkg index.js --targets node16-win-x64 pkg index.js --targets node16-macos-x64 pkg index.js --targets node18-linux-x64

这样 pkg 只会查找对应缓存文件。


六、常见问题排查

❓ pkg 仍然尝试下载?

  • 检查文件名是否完全一致
  • 是否放在正确的v3.4目录
  • Node 版本是否和--targets匹配

❓ 如何查看 pkg-fetch 版本?

pkg --debug

或查看缓存目录名(如v3.4


七、总结

✅ pkg 支持完全离线打包
✅ 手动缓存可解决 99% 网络问题
✅ 推荐提前下载并统一管理.pkg-cache

适合:

  • 内网环境
  • CI / Docker 构建
  • 国内网络不稳定环境
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/12 4:03:13

PuTTY工具沦为横向渗透与数据窃取双重武器的技术剖析与防御启示

在企业内网安全防御体系中&#xff0c;运维工具向来是一把“双刃剑”。PuTTY作为一款轻量、开源的SSH远程连接工具&#xff0c;凭借其便捷性与兼容性&#xff0c;成为运维人员日常工作的标配。然而&#xff0c;攻击者正利用其“合法身份”的掩护&#xff0c;通过篡改程序、滥用…

作者头像 李华
网站建设 2026/6/11 9:18:15

基于Thinkphp和Laravel旅游景点门票信息系统设计与实现-vue

目录具体实现截图项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理具体实现截图 本系统&#xff08;程序源码数据库调试部署讲解&#xff09;带文档1万字以上 同行可拿货,招校园代理 基于Thinkphp和Laravel旅游景点门票信息系统设计与实现-vue …

作者头像 李华
网站建设 2026/6/11 7:38:00

【独家揭秘】:Open-AutoGLM高精度流量预测模型背后的算法逻辑

第一章&#xff1a;Open-AutoGLM流量监控预警 Open-AutoGLM 是一个面向大模型服务的自动化流量感知与响应系统&#xff0c;专注于实时监控 API 调用行为并识别异常流量模式。其核心能力在于通过动态阈值学习和请求特征分析&#xff0c;实现对突发高峰、高频调用及潜在攻击行为的…

作者头像 李华
网站建设 2026/6/12 2:01:31

15、家庭网络上网与安全防护全攻略

家庭网络上网与安全防护全攻略 在家庭网络环境中,实现多设备共享上网以及保障网络安全是非常重要的。下面将详细介绍相关的技术和操作方法。 1. 上网连接与共享方式 当电脑连接到互联网后,在 Windows XP 任务栏右侧的系统托盘区域会出现一个小的拨号连接图标。工作完成后,…

作者头像 李华
网站建设 2026/6/10 5:14:15

Open-AutoGLM流量监控系统搭建全攻略(手把手教你实现零延迟告警)

第一章&#xff1a;Open-AutoGLM流量监控预警概述Open-AutoGLM 是一款面向大规模语言模型服务的自动化流量监控与智能预警系统&#xff0c;专为高并发场景下的 API 调用行为分析而设计。该系统通过实时采集请求频率、响应延迟、异常码分布等关键指标&#xff0c;结合动态阈值算…

作者头像 李华
网站建设 2026/6/10 18:57:59

20、深入理解TCP/IP协议:从基础到配置

深入理解TCP/IP协议:从基础到配置 1. TCP/IP相关协议概述 在网络通信中,有许多与TCP/IP相关的重要协议,它们各自承担着不同的功能: - ARP(地址解析协议) :将IP地址转换为MAC地址。 - RARP(反向地址解析协议) :将MAC地址转换为IP地址。 - Telnet :一种远程…

作者头像 李华