You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

代理网络下npx expo-cli init报getaddrinfo ENOTFOUND错误求助

问题根因

你仅配置了npm客户端自身的代理规则,npx临时执行expo-cli时,CLI内部发起的模板下载请求、域名解析请求不会自动继承npm的代理配置。当前代理环境下本地DNS无法解析registry.npmjs.org域名,直接触发getaddrinfo ENOTFOUND错误。
你提到的npm start可正常运行、非代理网络下init成功属于符合预期的现象:npm start仅调用本地已安装的依赖,不需要发起外网资源拉取请求;非代理网络下本地DNS可正常解析registry域名,不会触发解析失败。

解决方案

按以下顺序配置即可解决问题:

  • 配置当前终端会话的全局代理环境变量,让终端内所有node进程统一走代理,替换命令里的占位符为实际代理地址、端口即可:
    # Mac/Linux 终端执行
    export HTTP_PROXY=http://(myProxyAddress):(myPort)
    export HTTPS_PROXY=http://(myProxyAddress):(myPort)
    export NO_PROXY=localhost,127.0.0.1
    
    # Windows CMD 执行
    set HTTP_PROXY=http://(myProxyAddress):(myPort)
    set HTTPS_PROXY=http://(myProxyAddress):(myPort)
    set NO_PROXY=localhost,127.0.0.1
    
    配置完成后可通过echo $HTTPS_PROXY(Mac/Linux)或echo %HTTPS_PROXY%(Windows CMD)确认变量已生效。
  • 显式指定npm源地址执行init命令,避免CLI默认走HTTPS源触发证书/解析问题:
    npx expo-cli init 你的项目名称 --registry http://registry.npmjs.org/
    
  • 如果仍报DNS解析错误,说明你的代理需要由服务端完成域名解析,本地解析会失败,添加node启动参数强制优先走IPv4解析、禁用本地DNS预查询即可:
    # Mac/Linux 直接执行
    NODE_OPTIONS="--dns-result-order=ipv4first" npx expo-cli init 你的项目名称 --registry http://registry.npmjs.org/
    
    # Windows CMD 先执行参数配置,再执行init命令
    set NODE_OPTIONS=--dns-result-order=ipv4first
    npx expo-cli init 你的项目名称 --registry http://registry.npmjs.org/
    
  • 额外排查项:如果你的代理需要身份认证,代理地址要写成http://用户名:密码@代理地址:端口格式,补全认证信息即可。

配置完成后可以先在当前终端执行curl https://registry.npmjs.org/expo-template-blank验证,能正常返回JSON内容就说明代理配置生效,再执行init命令不会报错。


内容的提问来源于stack exchange,提问作者Rickyslash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 13:00:53