nvm mantiene el nodo" olvidando " en la nueva sesión de terminal


Al usar una nueva sesión de terminal en OS X, nvm olvida la versión del nodo y por defecto no tiene nada:

$ nvm ls:

         .nvm
     v0.11.12
     v0.11.13

Tengo que seguir golpeando nvm use v.0.11.13 en cada sesión:

         .nvm
     v0.11.12
->   v0.11.13

He intentado tanto la instalación brew, así como el script de instalación oficial.

Mi .profile para la versión brew:

#nvm
export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh

Y por el install.sh script:

$ curl https://raw.githubusercontent.com/creationix/nvm/v0.10.0/install.sh | bash

#nvm
export NVM_DIR="/Users/farhad/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm

¿Alguna pista de lo que estoy haciendo mal?

Author: bfontaine, 2014-07-05

10 answers

Intenta nvm alias default. Por ejemplo:

$ nvm alias default 0.12.7

Esto establece la versión de nodo predeterminada en su shell. A continuación, compruebe que el cambio persiste cerrando la ventana de shell, abriendo una nueva y: node --version

 946
Author: dylants,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-19 18:50:31

Alias a node para evitar actualizar el alias predeterminado junto con las actualizaciones de la versión del nodo más adelante.

nvm alias default node
 70
Author: Tarun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-06 14:58:38

Para instalar la última versión estable:

nvm install stable

Para establecer por defecto la versión estable (en lugar de una versión específica):

nvm alias default stable

Para listar las versiones instaladas:

nvm list

A partir de v6.2.0, se verá algo así como:

$ nvm list
         v4.4.2
->       v6.2.0
default -> stable (-> v6.2.0)
node -> stable (-> v6.2.0) (default)
stable -> 6.2 (-> v6.2.0) (default)
iojs -> N/A (default)
 31
Author: ohho,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-01 06:37:42

Nvm hace su trabajo cambiando la variable PATH, por lo que debe asegurarse de que no está cambiando de alguna manera su RUTA a otra cosa después de obtener el nvm.sh guión.

En mi caso, nvm.sh estaba siendo llamado .bashrc pero luego la variable PATH se estaba actualizando .bash_profile que causó que mi sesión encontrara el nodo del sistema antes que el nodo nvm.

 18
Author: Jeff Mikels,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-08 15:22:19

En mi caso, otro programa había agregado PATH cambios a .bashrc

Si el otro programa cambió la PATH después de la inicialización de nvm, entonces se olvidarían los cambios de PATH de nvm, y obtendríamos el nodo del sistema en nuestro PATH (o ningún nodo).

La solución fue mover la configuración de nvm al inferior de .bashrc

### BAD .bashrc ###

# NVM initialisation
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm

# Some other program adding to the PATH:
export PATH="$ANT_ROOT:$PATH"

Solución:

### GOOD .bashrc ###

# Some other program adding to the PATH:
export PATH="$ANT_ROOT:$PATH"

# NVM initialisation
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm

(Esto fue con bash 4.2.46 en CentOS. Me parece un bicho en bash, pero puede que sea equivocado.)

 11
Author: joeytwiddle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-06 17:02:36

Las soluciones mejor valoradas no parecían funcionar para mí. Mi solución es la siguiente:

  1. Desinstalar nvm completamente usando homebrew: brew uninstall nvm
  2. Reinstalar
  3. brew install nvm
  4. En Terminal, siga los pasos a continuación (estos también se enumeran al instalar nvm a través de homebrew):

    mkdir ~/.nvm cp $(brew --prefix nvm)/nvm-exec ~/.nvm/ export NVM_DIR=~/.nvm source $(brew --prefix nvm)/nvm.sh

Los pasos descritos anteriormente agregarán el directorio de trabajo de NVM a su ruta HOME HOME, copiarán nvm-exec al directorio de trabajo de NVM y lo agregarán a $HOME/.bashrc, HOME INICIO/.zshrc, o de su shell archivo de configuración equivalente.(de nuevo tomado de lo que aparece en una instalación de NVM usando homebrew)

 6
Author: Joe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-01 15:53:41

Esta pregunta se ha mencionado para el OSX, pero me sucedió en mi sistema operativo linux. Intenté usar nvm alias default <version> pero para cada nueva sesión de terminal se olvidó la versión del nodo utilizada. por lo tanto, aquí está la solución que me di cuenta.

Asegúrese de establecer un alias predeterminado para la versión del nodo , introduzca el siguiente código .bashrc, and source .bashrc.

export NVM_DIR="/home/bonnie/.nvm"
## If the file exists and is not empty
if [ -s "$NVM_DIR/nvm.sh" ]; then
    ## Source it
    source "$NVM_DIR/nvm.sh"
fi
NODE_DEFAULT_VERSION=$(<"$NVM_DIR/alias/default")
export PATH="$NVM_DIR/versions/node/$NODE_DEFAULT_VERSION/bin":$PATH

Descriptive solution link

 3
Author: souparno majumder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:10:33

Ejecute esto después de instalar cualquier versión,

n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/local

Este comando está copiando cualquier versión del nodo que tenga activo a través de nvm en el directorio /usr/local/ y estableciendo los permisos para que todos los usuarios puedan acceder a ellos.

 2
Author: Mouafa Ahmed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-12 09:50:19

He encontrado un nuevo camino aquí. Usando n Administre Interactivamente Su Nodo.js ayuda.

 2
Author: Harshit Garg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-23 07:51:32

También en caso de que tuviera node instalado antes de nvm compruebe en su ~/.bash_profile para no tener algo como :

export PATH=/bin:/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:$PATH

Si lo tiene, coméntelo/elimínelo y nvm debería comenzar a manejar la versión de nodo predeterminada.

 -1
Author: tibbus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-03 23:56:18