npm install 可以走代理。npm start 启动应用后,它的 API 请求却直接发出。这未必说明 npm 忘记了这项设置。

第一个请求由包管理器发出。第二个请求由你的应用发出。npm 配置里的代理值只是供读取它的使用方参考的数据,而不是垫在每个子进程下面的隧道。

检查应用的 HTTP 客户端以及它支持的代理接口。它可能读取标准环境变量,可能需要显式的 agent 或 dispatcher,也可能使用其他有文档说明的设置。不要假定形似 npm_config_proxy 的变量会被自动识别。

还要把出站代理与开发服务器的 API 转发功能区分开。把浏览器请求从开发服务器转发到后端的设置另有其职责;它并不自动成为应用发出的每个请求的网络出口。

为了有效对比,请指出成功的那个请求,以及发出失败请求的那个进程。然后有意识地去配置后者。使用 Undici 的 fetch 的应用可以按照其 ProxyAgent dispatcher 配置来做,并选用与其 Node 运行时兼容的软件包版本。更换 npm 的 registry 端点或反复重装应用,本身并不会补上那条缺失的路径。

相关文章