目次

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

#

コマンドプロンプトを使用している場合

cmd
$ 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 buildがHttpExceptionエラーで失敗する

#

pub buildを実行すると、次のようなHttpExceptionエラーが表示されます

Pub build failed, [1] IsolateSpawnException: 'HttpException: Connection closed while receiving data,
...
library handler failed
...

これは、AVG 2013インターネットセキュリティスイートなど、一部のアンチウイルスソフトウェアが原因で発生する可能性があります。 セキュリティスイートのマニュアルで、この機能を一時的に無効にする方法を確認してください。 たとえば、AVGコンポーネントを無効にする方法を参照してください。

企業ファイアウォールの背後からpub getが失敗する

#

コマンドラインから、pubはhttp_proxyおよびhttps_proxy環境変数に従います。 プロキシサーバーの環境変数は次のように設定できます。

Linux/macOSの場合

$ export https_proxy=hostname:port

Windowsコマンドプロンプトの場合

cmd
$ set https_proxy=hostname:port

Windows PowerShellの場合

$ $Env:https_proxy="hostname:port"

プロキシが認証情報を必要とする場合は、次のように設定できます。

Linux/macOSの場合

$ export https_proxy=username:password@hostname:port

Windowsコマンドプロンプトの場合

cmd
$ 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とは異なる場合があります。 ブラウザを使用してサインインできますが、ブラウザはhttp://localhost:<port>?code=...にアクセスできないと訴えます。

コマンドラインを使用してサインインを完了するこの回避策を試してください

  1. ターミナルウィンドウで、dart pub publishを実行します。

  2. 表示されるブラウザウィンドウで、サインインします。
    ブラウザは*新しいlocalhost URL*(http://localhost:<port>?code=...)にリダイレクトされますが、URLにアクセスできないと訴えます。

  3. ブラウザから*新しいlocalhost URL*をコピーします。

  4. dart pub publishが呼び出されたのと同じコンテナまたは同じホストの別のターミナルウィンドウで、curlコマンドを使用して*新しいlocalhost 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.devhttps://pub.dartlang.orgの両方を信頼ゾーンに追加します

  1. カスペルスキーインターネットセキュリティを開きます。
  2. **プライバシー**アイコンをクリックします。
  3. **ウェブサイトトラッキングのブロック**セクションで、**設定**ボタンをクリックします。
  4. 上部のアイコンバーで、**脅威**を選択します。
  5. **脅威**で、**信頼ゾーン**をクリックします。
  6. **信頼できるWebアドレス**タブを選択します。
  7. **+**ボタンをクリックし、URL https://pub.devを追加します。
  8. **OK**をクリックします。
  9. https://pub.dartlang.orgについても前の2つの手順を繰り返します