pub 故障排除
发布软件包时遇到“403”错误
#运行 pub publish
时收到以下错误
HTTP error 403: Forbidden
...
You aren't an uploader for package '<foo>'
如果您的某个帐户被授予发布软件包的权限,但 pub 客户端使用另一个帐户注册您,则可能会发生此问题。
您可以通过删除 pub 凭据文件来重置 pub 的身份验证过程
Linux
#如果定义了 $XDG_CONFIG_HOME
$ rm $XDG_CONFIG_HOME/dart/pub-credentials.json
否则
$ rm $HOME/.config/dart/pub-credentials.json
macOS
#$ rm $HOME/Library/Application Support/dart/pub-credentials.json
Windows
#如果您使用的是命令提示符
$ del "%APPDATA%\dart\pub-credentials.json"
如果您使用的是 PowerShell
$ Remove-Item -Path "%APPDATA%\dart\pub-credentials.json"
发布软件包时遇到“UnauthorizedAccess”错误
#运行 pub publish
时收到以下错误
UnauthorizedAccess: Unauthorized user: <username> is not allowed to upload versions to package '<foo>'.
如果您不在被授权发布软件包新版本的人员列表中,您将看到此消息。请参阅上传者。
Pub 构建因 HttpException 错误而失败
#运行 pub build
时,您会收到类似于以下内容的 HttpException 错误
Pub build failed, [1] IsolateSpawnException: 'HttpException: Connection closed while receiving data,
...
library handler failed
...
这可能是由于某些防病毒软件(例如 AVG 2013 Internet Security 套件)导致的。查看您的安全套件手册,了解如何临时禁用此功能。例如,请参阅如何禁用 AVG 组件。
Pub get 在企业防火墙后失败
#从命令行,pub 遵循 http_proxy
和 https_proxy
环境变量。您可以按如下方式设置代理服务器环境变量。
在 Linux/macOS 上
$ export https_proxy=hostname:port
在 Windows 命令提示符下
$ set https_proxy=hostname:port
在 Windows PowerShell 下
$ $Env:https_proxy="hostname:port"
如果代理需要凭据,您可以按如下方式设置它们。
在 Linux/macOS 上
$ export https_proxy=username:password@hostname:port
在 Windows 命令提示符下
$ set https_proxy=username:password@hostname:port
在 Windows PowerShell 下
$ $Env:https_proxy="username:password@hostname:port"
登录后无法访问本地主机
#当您在容器中或通过 SSH 会话运行 dart pub publish
时,dart pub
正在侦听的 localhost
可能与您的浏览器中可访问的 localhost
不同。虽然您可以使用浏览器登录,但浏览器随后会抱怨 http://localhost:<port>?code=...
无法访问。
尝试此解决方法,它使用命令行完成登录
在终端窗口中,运行
dart pub publish
。在弹出的浏览器窗口中,登录。
浏览器将重定向到新的本地主机 URL (http://localhost:<port>?code=...
),但抱怨该 URL 无法访问。从浏览器复制新的本地主机 URL。
在与调用
dart pub publish
的容器或主机相同的另一个终端窗口中,使用curl
命令,使用新的本地主机 URL 完成登录$ curl 'http://localhost:<port>?code=...'
尝试查找软件包时遇到套接字错误
#如果您没有互联网连接、您的 ISP 阻止了 pub.dev
或安全软件阻止了 dart
的互联网访问,则可能会发生以下错误。
Got socket error trying to find package ... at https://pub.dev.
pub get failed (server unavailable) -- attempting retry 1 in 1 second...
检查您的互联网连接,并验证您没有防火墙或其他安全软件阻止 dart
的互联网访问。
卡巴斯基安全软件的详细说明
当您从菜单栏关闭卡巴斯基安全软件保护时,VPN 应用程序过滤器 sysextctrld
仍在后台运行。此过滤器会导致无法连接到 pub.dev
。要解决此问题,请将 https://pub.dev
和 https://pub.dartlang.org
都添加到信任区域
- 打开卡巴斯基安全软件。
- 点击隐私图标。
- 在阻止网站跟踪部分下,点击偏好设置按钮。
- 在顶部图标栏中,选择威胁。
- 在威胁下,点击信任区域。
- 选择信任的 Web 地址标签页。
- 点击 + 按钮,并添加 URL
https://pub.dev
。 - 点击确定。
- 对
https://pub.dartlang.org
重复前两个步骤
除非另有说明,否则本网站上的文档反映的是 Dart 3.7.1 版本。页面上次更新于 2024-02-07。 查看源代码 或 报告问题。