node & nodejs tienen una versión diferente

15

Actualicé / instalé con éxito la última versión del nodo js usando esos comandos (la curlforma oficial no funciona para mí):

sudo npm cache clean -f
sudo npm install -g n
sudo n stable

sudo ln -sf /usr/local/n/versions/node/<VERSION>/bin/node /usr/bin/node

Sin embargo, la versión de mi nodo y nodejs se vuelven diferentes:

$ node --version
v5.0.0
$ nodejs --version
v0.10.25

Parece que el nuevo nodo está instalado /usr/local/bin/node, así que intenté:

sudo ln -s /usr/bin/nodejs /usr/local/bin/node

Pero vuelve:

ln: failed to create symbolic link ‘/usr/local/bin/node’: File exists

También uso este enlace:

$ sudo ln -s /usr/bin/nodejs /usr/bin/node
ln: failed to create symbolic link ‘/usr/bin/node’: File exists

Usaré algunos frameworks que dependen de node, como Ionic. ¿Qué versión de nodo usará?

¿Qué debo hacer para resolver esto?

Muchas gracias por tu ayuda

Blaze Tama
fuente
La verdadera pregunta es imo, ¿cómo le digo n para sobrescribir las versiones existentes de nodo y enlace simbólico tanto nodejsy nodeal binario instalado por n. Y si n es incapaz de hacerlo, ¿cuál es el enfoque más avanzado? En un entorno de trabajo es muy propenso a errores, si nodejs y node abordan diferentes versiones de nodejs.
atripes

Respuestas:

13

Pasos que resolvieron el mismo problema para mí:

sudo apt-get remove nodejs
sudo ln -s /usr/bin/node /usr/bin/nodejs

Explicación

Ha instalado dos versiones de nodejs en su computadora, por lo que debe eliminar una de ellas. Tu situación:

node v5.0.0 - you will keep this one
nodejs v0.10.25 - this you can remove

Puede eliminar el nodejspaquete a través del apt-get removecomando. Esto también eliminará el archivo /usr/bin/nodejsy no volverá a recibir su mensaje de error.

Ahora puede crear un enlace simbólico llamado "/ usr / bin / nodejs", que apunta a la fuente "/ usr / local / bin / node". En su ejemplo, tiene un orden incorrecto de rutas "de" y "a"

sudo ln -s source_file myfile

Más información sobre la creación de enlaces: cómo funcionan los enlaces simbólicos

areim
fuente
5

El error:

ln: failed to create symbolic link ‘/usr/bin/node’: File exists

normalmente se produce cuando realmente tiene dos versiones de Nodejs, una con el alias de la nodey la otra con el nodejsalias, como podemos ver en el resultado de los comandos node --versiony nodejs --version:

$ node --version
v5.0.0
$ nodejs --version
v0.10.25

por lo que no puede crear un enlace simbólico para un archivo que ya existe.

Para resolver esto, debe eliminar completamente los dos paquetes usando:

sudo apt-get purge node
sudo apt-get purge nodejs
sudo rm -rf bin/node bin/node-waf include/node lib/node lib/pkgconfig/nodejs.pc share/man/man1/node

y reinstale solo el nodejspaquete usando el comando:

sudo apt-get install nodejs

y crea un enlace simbólico usando:

ln -s /usr/bin/nodejs /usr/bin/node

o instale el nodejs-legacyque resolverá este problema con el comando:

sudo apt-get install nodejs-legacy 
valdeci
fuente
muchas gracias, agregaste la información, ya resolví el problema por mí mismo. Yo voté a favor.
areim
0

Para mí, el nodecomando es el NodeJS instalado por nvmy el nodejscomando es el NodeJS instalado usandoapt-get

Alexander Elgin
fuente