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 -sluego 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
nodeynpmestoy usando para/usr/local/bin:Esto hace
npmynodedisponible para todos los usuarios.fuente
npxbastante a menudo. Así que lo agregué también:sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npx" "/usr/local/bin/npx"babel-nodeSu problema es que
nvmno 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 nvmno 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 nodede usuario.which nvmnunca funciona, ¿verdad?nvmno es un ejecutable, es una función de shell. github.com/creationix/nvm/issues/540which nvmaquí: stackoverflow.com/questions/49156104/… Usetype nvmpara revelar su definición. Como dijo Matt, es una función de shell.La razón fundamental es porque
nvmno es un programa real. Es una función fiesta que se carga en el usuario de.profile,.bashrco ... Asísudono 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 quesudolo recogerá a través de $ PATH sin ningún truco (siempre quesudotenga/usr/local/binen su $ PATH).fuente
Según README
¿Necesita sudo npm?
En mi caso, necesito el
sudo npm run startque 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
nvmy 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 bashfuente
| 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