Saltar al contenido principal

Solución de problemas de pub

Problemas comunes con los que te podrías encontrar al usar pub.

Recibir un error "403" al publicar un paquete

#

Recibes el siguiente error al ejecutar pub publish:

HTTP error 403: Forbidden
...
You aren't an uploader for package '<foo>'

Este problema puede ocurrir si a una de tus cuentas se le otorgó permiso para publicar un paquete, pero el cliente pub te registra con otra cuenta.

Puedes restablecer el proceso de autenticación de pub eliminando el archivo de credenciales de pub:

Linux

#

Si $XDG_CONFIG_HOME está definido:

rm $XDG_CONFIG_HOME/dart/pub-credentials.json

De lo contrario:

rm $HOME/.config/dart/pub-credentials.json

macOS

#
rm $HOME/Library/Application Support/dart/pub-credentials.json

Windows

#

Si estás usando el Símbolo del sistema (Command Prompt):

cmd
$ del "%APPDATA%\dart\pub-credentials.json"

Si estás usando PowerShell:

$ Remove-Item -Path "%APPDATA%\dart\pub-credentials.json"

Recibir un error "UnauthorizedAccess" al publicar un paquete

#

Recibes el siguiente error al ejecutar pub publish:

UnauthorizedAccess: Unauthorized user: <username> is not allowed to upload versions to package '<foo>'.

Verás este mensaje si no estás en la lista de personas autorizadas para publicar nuevas versiones de un paquete. Consulta Uploaders.

La compilación de pub falla con un error HttpException

#

Recibes un error HttpException similar al siguiente al ejecutar pub build:

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

Esto puede ocurrir como resultado de algún software antivirus, como la suite de seguridad de Internet AVG 2013. Consulta el manual de tu suite de seguridad para ver cómo desactivar temporalmente esta función. Por ejemplo, consulta Cómo desactivar los componentes de AVG.

Pub get falla detrás de un firewall corporativo

#

Desde la línea de comandos, pub respeta las variables de entorno http_proxy y https_proxy. Puedes configurar la variable de entorno del servidor proxy de la siguiente manera.

En Linux/macOS:

export https_proxy=hostname:port

En el Símbolo del sistema de Windows:

cmd
$ set https_proxy=hostname:port

En Windows PowerShell:

$ $Env:https_proxy="hostname:port"

Si el proxy requiere credenciales, puedes configurarlas de la siguiente manera.

En Linux/macOS:

export https_proxy=username:password@hostname:port

En el Símbolo del sistema de Windows:

cmd
$ set https_proxy=username:password@hostname:port

En Windows PowerShell:

$ $Env:https_proxy="username:password@hostname:port"

Localhost no disponible después de iniciar sesión

#

Cuando ejecutas dart pub publish en un contenedor o a través de una sesión SSH, el localhost que dart pub está escuchando podría ser diferente del localhost accesible en tu navegador. Aunque puedes iniciar sesión usando el navegador, el navegador luego se quejará de que http://localhost:<port>?code=... no está disponible.

Prueba esta alternativa, que utiliza la línea de comandos para completar el inicio de sesión:

  1. En una ventana de terminal, ejecuta dart pub publish.

  2. En la ventana del navegador que aparece, inicia sesión.
    El navegador es redirigido a una nueva URL de localhost (http://localhost:<port>?code=...) pero se queja de que la URL no está disponible.

  3. Copia la nueva URL de localhost desde el navegador.

  4. En otra ventana de terminal en el mismo contenedor o en el mismo host que aquel donde se llamó a dart pub publish, usa el comando curl para completar el inicio de sesión utilizando la nueva URL de localhost:

    curl 'http://localhost:<port>?code=...'
    

Recibir un error de socket al intentar buscar un paquete

#

El siguiente error podría ocurrir si no tienes acceso a internet, tu proveedor de servicios de internet (ISP) está bloqueando pub.dev, o el software de seguridad está bloqueando el acceso a internet desde dart.

Got socket error trying to find package ... at https://pub.dev.
pub get failed (server unavailable) -- attempting retry 1 in 1 second...

Verifica tu conexión a internet y comprueba que no tengas un firewall u otro software de seguridad que bloquee el acceso a internet desde dart.

Instrucciones detalladas para Kaspersky Internet Security

Cuando has desactivado la protección de Kaspersky Internet Security desde la barra de menús, el filtro de aplicación VPN sysextctrld se sigue ejecutando en segundo plano. Este filtro provoca una falla al conectarse a pub.dev. Para resolver este problema, agrega tanto https://pub.dev como https://pub.dartlang.org a la zona de confianza:

  1. Abre Kaspersky Internet Security.
  2. Haz clic en el icono Privacidad (Privacy).
  3. En la sección Bloquear el seguimiento de sitios web (Block website tracking), haz clic en el botón Preferencias (Preferences).
  4. En la barra de iconos superior, selecciona Amenazas (Threats).
  5. Bajo Amenazas (Threats), haz clic en Zona de confianza (Trusted Zone).
  6. Selecciona la pestaña Direcciones web de confianza (Trusted web addresses).
  7. Haz clic en el botón + y agrega la URL https://pub.dev.
  8. Haz clic en Aceptar (OK).
  9. Repite los dos pasos anteriores para https://pub.dartlang.org