He mencionado que mi aplicación usa una versión diferente de NodeJS cuando se ejecuta desde sudo
.
$ node -v
v0.10.23
$ sudo node -v
v0.11.8-pre
Este v0.11.8-pre me causó algunos problemas, así que definitivamente no quiero usarlo, pero no puedo cambiarlo por root.
$ sudo nvm use v0.10.23
sudo: nvm: command not found
Intenté instalar nvm desde el usuario root, pero obtuve el error "NVM ya instalado", pero aún no se encontró nvm al ejecutar desde sudo
. Cual es mi problema
sudo -s
luego instalenvm
.Respuestas:
La siguiente lista de comandos (fuente: digitalocean ) parece solucionar el problema
El comando anterior es un poco complicado, pero todo lo que hace es copiar cualquier versión del nodo que tenga activa a través de nvm en el
/usr/local/
directorio (donde los archivos globales instalados por el usuario deben vivir en un VPS de Linux) y configurar los permisos para que todos los usuarios puedan acceder a ellos .¡Espero que esto ayude!
fuente
chmod: cannot operate on dangling symlink ‘/home/ec2-user/.nvm/versions/node/v7.1.0/bin/node-debug’ chmod: cannot operate on dangling symlink ‘/home/ec2-user/.nvm/versions/node/v7.1.0/bin/node-inspector’
Mi solución es crear enlaces simbólicos a partir de las versiones de
node
ynpm
estoy usando para/usr/local/bin
:Esto hace
npm
ynode
disponible para todos los usuarios.fuente
npx
bastante a menudo. Así que lo agregué también:sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npx" "/usr/local/bin/npx"
babel-node
Su problema es que
nvm
no está en el camino cuando lo usasudo
.Así que escribe
y el resultado será algo como
Vuelve a intentarlo ahora con
sudo
:Supongo que luego se encuentra con el problema de que el usuario root no puede encontrar la versión 0.10.13, pero veamos el siguiente mensaje de error ...
fuente
which nvm
no produce nadasudo
. Sí, puedo iniciar sesión como root e instalar nvm, pero en el futuro no pude ejecutarsudo nvm use v0.10.25
. Así que tampoco pude usarsudo node
de usuario.which nvm
nunca funciona, ¿verdad?nvm
no es un ejecutable, es una función de shell. github.com/creationix/nvm/issues/540which nvm
aquí: stackoverflow.com/questions/49156104/… Usetype nvm
para revelar su definición. Como dijo Matt, es una función de shell.La razón fundamental es porque
nvm
no es un programa real. Es una función fiesta que se carga en el usuario de.profile
,.bashrc
o ... Asísudo
no se recupera automáticamente desde el $ PATH como la mayoría de otros programas.Un administrador de versiones de nodo alternativo es
n
: https://github.com/tj/n . Ese es un programa real, por lo quesudo
lo recogerá a través de $ PATH sin ningún truco (siempre quesudo
tenga/usr/local/bin
en su $ PATH).fuente
Según README
¿Necesita sudo npm?
En mi caso, necesito el
sudo npm run start
que necesita el acceso a algún archivo que requiera acceso de root. Según este tema ,En suma
El responsable de mantenimiento de nvm cree firmemente que no es necesario
sudo
: Pfuente
Yo también tuve tu problema. Finalmente lo he solucionado. Aquí está mi solución:
apt-get purge nodejs
.Después de reiniciar su terminal, puede ejecutar el comando
sudo nvm ls
.fuente
fuente
He intentado lo mismo en mi máquina donde también lo he hecho
nvm
y tengo una respuesta ligeramente diferente:Supongo que ha instalado el nodo 0.11 fuera de nvm. (A través del administrador de paquetes o incluso desde la fuente )
Por lo tanto, ejecutar el nodo a través de sudo recogería este nodo independiente en su lugar.
¿Tiene sentido o me equivoco?
fuente
Instale nvm globalmente con
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | sudo bash
fuente
| bash
, no sudo en ninguna parte: nvm-sh / nvm: Node Version ManagerLa solución más fácil para esto probablemente será simplemente presionar el ejecutable nvm.sh donde sea que esté.
Esto funciona bien para mí (asumiendo que esa es la ruta de instalación).
El procedimiento de instalación completo se vería así
Y luego puede ejecutar el comando anterior para acceder al nvm.sh recién instalado
fuente