Pub 命令问题排查
Common gotchas you might run into when using pub.
Getting a "403" error when publishing a package
#
You receive the following error when running
pub publish:
HTTP error 403: Forbidden
...
You aren't an uploader for package '<foo>'
This problem can occur if one of your accounts was granted permission to publish a package, but the pub client registers you with another account.
You can reset pub's authentication process by deleting the pub credentials file:
Linux
#If $XDG_CONFIG_HOME is defined:
rm $XDG_CONFIG_HOME/dart/pub-credentials.json
Otherwise:
rm $HOME/.config/dart/pub-credentials.json
macOS
#rm $HOME/Library/Application Support/dart/pub-credentials.json
Windows
#If you're using Command Prompt:
$ del "%APPDATA%\dart\pub-credentials.json"
If you're using PowerShell:
$ Remove-Item -Path "%APPDATA%\dart\pub-credentials.json"
Getting an "UnauthorizedAccess" error when publishing a package
#
You receive the following error when running
pub publish:
UnauthorizedAccess: Unauthorized user: <username> is not allowed to upload versions to package '<foo>'.
You will see this message if you are not on the list of people authorized to publish new versions of a package. See Uploaders.
Pub build fails with HttpException error
#
You receive an HttpException error similar to the following
when running pub build:
Pub build failed, [1] IsolateSpawnException: 'HttpException: Connection closed while receiving data,
...
library handler failed
...
This can happen as a result of some antivirus software, such as the AVG 2013 Internet security suite. Check the manual for your security suite to see how to temporarily disable this feature. For example, see How to Disable AVG Components.
Pub get fails from behind a corporate firewall
#
From the command line, pub honors the
http_proxy and https_proxy
environment variables. You can set the proxy server
environment variable as follows.
On Linux/macOS:
export https_proxy=hostname:port
On Windows Command Prompt:
$ set https_proxy=hostname:port
On Windows PowerShell:
$ $Env:https_proxy="hostname:port"
If the proxy requires credentials, you can set them as follows.
On Linux/macOS:
export https_proxy=username:password@hostname:port
On Windows Command Prompt:
$ set https_proxy=username:password@hostname:port
On Windows PowerShell:
$ $Env:https_proxy="username:password@hostname:port"
Localhost unreachable after sign-in
#
When you run dart pub publish in a container or
over an SSH session, the localhost that
dart pub is listening to might be different
from the localhost that's accessible in your
browser. Although you can sign in using the browser, the
browser then complains that
http://localhost:<port>?code=...
is not reachable.
Try this workaround, which uses the command line to complete sign-in:
-
In a terminal window, run
dart pub publish. -
In the browser window that comes up, sign in.
The browser is redirected to a new localhost URL (http://localhost:<port>?code=...) but complains that the URL isn't reachable. -
Copy the new localhost URL from the browser.
-
In another terminal window in the same container or on the same host as the one where
dart pub publishwas called, use thecurlcommand to complete sign-in using the new localhost URL:curl 'http://localhost:<port>?code=...'
Getting a socket error trying to find a package
#
The following error might occur if you have no internet
access, your ISP is blocking pub.dev, or
security software is blocking internet access from
dart.
Got socket error trying to find package ... at https://pub.dev.
pub get failed (server unavailable) -- attempting retry 1 in 1 second...
Check your internet connection, and verify that you don't
have a firewall or other security software that blocks
internet access from dart.
Detailed instructions for Kaspersky Internet Security
When you have turned off
Kaspersky Internet Security protection from the
menu bar, the VPN application filter
sysextctrld still runs in the background.
This filter causes a failure to connect to
pub.dev. To resolve this issue, add both
https://pub.dev and
https://pub.dartlang.org to the trusted zone:
- Open Kaspersky Internet Security.
- Click the Privacy icon.
- Under the Block website tracking section, click the Preferences button.
- In the top icon bar, select Threats.
- Under Threats, click Trusted Zone.
- Select the Trusted web addresses tab.
-
Click the + button, and add the URL
https://pub.dev. - Click OK.
-
Repeat the previous two steps for
https://pub.dartlang.org