如果 npm 安装越过了从注册表下载的阶段,却停在一个安装脚本里,请找出第二个下载器。JavaScript 包可能已经就位,而它的平台专属二进制文件却仍然缺失。

  1. 在日志中找到请求的归属者。 记录生命周期脚本、可执行文件或 HTTP 库、目标主机名和首个错误。一个包可能启动另一个程序,其下载与 npm 注册表的传输相互独立。
  2. 使用该下载器支持的代理接口。对于 tfjs-node 的 resources.js 路径,子进程的代理环境就是一个具体例子。 检查该包有文档记录的下载设置,以及发起请求的进程环境。标准代理变量只有在那个使用方会读取它时才有用;添加名称相似的变量并不能证明支持。
  3. 沿实际的产物路径排查。 发布服务器、对象存储和重定向目标都可能与注册表不同。针对失败的请求,比较代理认证、批准的目标和 TLS 信任。

请在清理缓存之前这样做:日志中从获取包到执行生命周期的过渡已经缩小了故障范围。成功访问注册表是有价值的对比证据,但它不能证明次级程序支持同一路径,也不能证明它能访问自己的产物主机。

禁用安装脚本可能跳过下载,却让包无法使用。如果该包有文档记录的、经批准的预构建或离线安装路径,请有意准备该产物,并在把安装视为完成之前确认可执行文件可用。

相关文章