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
環境變數。您可以如下設定 Proxy 伺服器環境變數。
在 Linux/macOS 上
$ export https_proxy=hostname:port
在 Windows 命令提示字元上
$ set https_proxy=hostname:port
在 Windows PowerShell 上
$ $Env:https_proxy="hostname:port"
如果 Proxy 需要憑證,您可以如下設定它們。
在 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://127.0.0.1:<port>?code=...
無法連線。
請試試此變通方法,它會使用命令列來完成登入
在終端機視窗中,執行
dart pub publish
。在彈出的瀏覽器視窗中,登入。
瀏覽器會重新導向至新的 localhost URL (https://127.0.0.1:<port>?code=...
),但抱怨該 URL 無法連線。從瀏覽器複製新的 localhost URL。
在與呼叫
dart pub publish
的容器相同或與之相同的主機上的另一個終端機視窗中,使用curl
命令,使用新的 localhost URL 完成登入$ curl 'https://127.0.0.1:<port>?code=...'
嘗試尋找套件時收到 Socket 錯誤
#如果您沒有網際網路連線、您的 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
重複前兩個步驟
除非另有說明,否則本網站的文件反映 Dart 3.6.0。頁面上次更新時間為 2024-02-07。 檢視來源 或 回報問題。