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.jsonmacOS
#rm $HOME/Library/Application Support/dart/pub-credentials.jsonWindows
#如果您使用命令提示符
$ 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 suite。請查閱您的安全套件手冊,瞭解如何暫時停用此功能。例如,請參閱如何停用 AVG 元件。
在公司防火牆後 Pub 獲取失敗
#在命令列中,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"登入後 localhost 無法訪問
#當您在容器中或透過 SSH 會話執行 dart pub publish 時,dart pub 正在監聽的 localhost 可能與您的瀏覽器中可訪問的 localhost 不同。儘管您可以使用瀏覽器登入,但瀏覽器會抱怨 https://:<port>?code=... 無法訪問。
嘗試此解決方案,它使用命令列完成登入
在終端視窗中,執行
dart pub publish。在彈出的瀏覽器視窗中,登入。
瀏覽器會重定向到一個新的 localhost URL (https://:<port>?code=...),但會抱怨該 URL 無法訪問。從瀏覽器中複製新的 localhost URL。
在與呼叫
dart pub publish的容器或主機相同的另一個終端視窗中,使用curl命令,透過新的 localhost URL 完成登入curl 'https://:<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 訪問網際網路。
Kaspersky Internet Security 的詳細說明
當您從選單欄關閉 Kaspersky Internet Security 保護時,VPN 應用程式過濾器 sysextctrld 仍然在後臺執行。此過濾器會導致無法連線到 pub.dev。要解決此問題,請將 https://pub.dev 和 https://pub.dartlang.org 都新增到信任區域
- 開啟 Kaspersky Internet Security。
- 點選隱私圖示。
- 在阻止網站跟蹤部分下,點選偏好設定按鈕。
- 在頂部圖示欄中,選擇威脅。
- 在威脅下,點選信任區域。
- 選擇信任的網頁地址選項卡。
- 點選+按鈕,並新增 URL
https://pub.dev。 - 點選確定。
- 對
https://pub.dartlang.org重複前兩個步驟