Problemas al instalar Node y NPM a través de Homebrew

A partir del lunes por la mañana, falló la ejecución de los comandos nodemony npm run devpara un proyecto en el que estoy trabajando, y lo rastreé hasta algún error con NPM.

macbookpro@MacBookPro:/usr/local/lib$ npm -v
internal/modules/cjs/loader.js:983
throw err;
^
Error: Cannot find module '../lib/utils/unsupported.js'
Require stack:
- /usr/local/lib/node_modules/npm/bin/npm-cli.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:980:15)
at Function.Module._load (internal/modules/cjs/loader.js:862:27)
at Module.require (internal/modules/cjs/loader.js:1040:19)
at require (internal/modules/cjs/helpers.js:72:18)
at /usr/local/lib/node_modules/npm/bin/npm-cli.js:19:21
at Object.<anonymous> (/usr/local/lib/node_modules/npm/bin/npm-cli.js:153:3)
at Module._compile (internal/modules/cjs/loader.js:1151:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1171:10)
at Module.load (internal/modules/cjs/loader.js:1000:32)
at Function.Module._load (internal/modules/cjs/loader.js:899:14) {
code: 'MODULE_NOT_FOUND',
requireStack: [ '/usr/local/lib/node_modules/npm/bin/npm-cli.js' ]
}
macbookpro@MacBookPro:/usr/local/lib$ node -v
v13.8.0
macbookpro@MacBookPro:/usr/local/lib$ ls -al node_modules/npm/bin/
total 56
drwxr-xr-x 9 macbookpro staff 288B 24 Feb 09:03 ./
drwxr-xr-x 25 root wheel 800B 7 Aug 2019 ../
drwxr-xr-x 4 macbookpro staff 128B 24 Feb 09:03 node-gyp-bin/
-rwxr-xr-x 1 macbookpro staff 893B 24 Feb 09:03 npm*
-rwxr-xr-x 1 macbookpro staff 4.5K 24 Feb 09:03 npm-cli.js*
-rw-r--r-- 1 macbookpro staff 483B 24 Feb 09:03 npm.cmd
-rw-r--r-- 1 macbookpro staff 887B 24 Feb 09:03 npx
-rwxr-xr-x 1 macbookpro staff 177B 24 Feb 09:03 npx-cli.js*
-rw-r--r-- 1 macbookpro staff 539B 24 Feb 09:03 npx.cmd
macbookpro@MacBookPro:/usr/local/lib$

Entonces, mientras Node se estaba ejecutando, NPM no, a pesar de que su archivo estaba presente.

En el desarrollo que uso nodemony npm run deven dos pestañas de Terminal, ambas se estaban ejecutando el domingo por la noche, antes de detenerlas y luego dormir la Mac.

Me preguntaba si un permiso había sido alterado.

Probé Homebrew, que instaló Node pero no NPM, así que tuve que eliminarlo.

Probé el instalador oficial de Node para Mac, pero es una versión anterior que causó problemas, así que tuve que eliminarla.

Seguí el camino nuclear y eliminé Node dondequiera que se pudiera encontrar:

brew uninstall node;
which node;
sudo rm -rf /usr/local/bin/node;
sudo rm -rf /usr/local/lib/node_modules/npm/
brew doctor;
brew cleanup --prune-prefix

Luego probé las instrucciones oficiales para instalar Node a través de la línea de comando:

curl "https://nodejs.org/dist/latest/node-${VERSION:-$(wget -qO- https://nodejs.org/dist/latest/ | sed -nE 's|.*>node-(.*)\.pkg</a>.*|\1|p')}.pkg" > "$HOME/Downloads/node-latest.pkg" && sudo installer -store -pkg "$HOME/Downloads/node-latest.pkg" -target "/"

… que falló:

-bash: wget: command not found

… y cuando intenté instalar wget:

brew install wget

… Tengo más errores:

Error: el brew linkpaso no se completó con éxito La fórmula se creó, pero no está vinculada a /usr/local No se pudo vincular simbólicamente share/locale/cs/LC_MESSAGES/libidn2.mo /usr/local/share/locale/cs/LC_MESSAGES no se puede escribir .

Puede intentarlo de nuevo usando: brew link libidn2

… y:

Error: el brew linkpaso no se completó con éxito La fórmula se creó, pero no está vinculada a /usr/local No se pudo vincular simbólicamente share/locale/bg/LC_MESSAGES/wget.mo /usr/local/share/locale/bg/LC_MESSAGES no se puede escribir .

Puede intentarlo de nuevo usando: brew link wget

Tuve problemas similares con Homebrew antes del fin de semana, y creo que esto es una continuación de eso.

Cuando corro brew doctorme sale:

Unexpected header files:
  /usr/local/include/node/...

… y hay cientos de archivos asociados a Node, a pesar de haberlo desinstalado.

Desde entonces, encontré algunos enfoques diferentes para solucionar el posible problema de permisos:

sudo chown -Rquién soy:admin /usr/local/

… y:

sudo chown -R $(whoami) $(brew --prefix)/*

… pero como no tengo idea de cuáles serían las posibles consecuencias de ejecutar cualquiera de estos, ¡serían bienvenidos algunos consejos de expertos!

Volverse nuclear requiere una buena copia de seguridad: retroceda el reloj de 5:12 a 100 segundos antes de la medianoche restaurando su copia de seguridad del domingo por la noche. En mi humilde opinión, su carpeta /usr/local/ es FUBAR.
Hola @klanomath, ejecuté Time Machine el domingo. ¿Supongo que es posible restaurar carpetas ocultas?
Compruebe primero la respuesta de MichelleM...

Respuestas (1)

Acabo de resolver este mismo error. Lo que funcionó para mí fue:

brew install node
sudo chmod 776 /usr/local/lib
brew link --overwrite node
sudo chmod 755 /usr/local/lib

Cuando corrí, npm -vobtuve el mismo error:

internal/modules/cjs/loader.js:983
  throw err;

Para resolverlo, corrí brew reinstall nodey todo funciona como se esperaba ahora.

Hola Michelle, ¡gracias por la sugerencia! La preocupación que tengo es cambiar los permisos en esas carpetas, ¿alguna idea al respecto?
Verificaría sus permisos actuales en la carpeta ejecutando stat -f %A /usr/local/liby luego me aseguraría de volver a cambiarlos después de ejecutar brew link --overwrite nodecomo lo hice en mi respuesta :)
Cuando corrí, brew link --overwrite nodeobtuve: ¿ Linking /usr/local/Cellar/node/13.8.0... Error: Could not symlink include/node/common.gypi /usr/local/include/node is not writable.Necesitaría cambiar los permisos allí también?
Sí, yo también estaba recibiendo ese error. Corrí rm '/usr/local/include/node/config.gypi'y luego seguí los pasos en mi respuesta.
Además, no estoy seguro de qué versión de nodo está ejecutando, por lo que es posible que desee verificar esto para asegurarse de que está funcionando con la misma versión que tenía anteriormente.
Seguí estas instrucciones pero no funcionó:macbookpro@macbookpro:~$ node -v -bash: node: command not found macbookpro@macbookpro:~$ npm -v -bash: npm: command not found macbookpro@macbookpro:~$
Eso significa que el nodo no está instalado. ¿ Corriste brew install node?
Sí, ejecuté los comandos según la respuesta.
¿Cuál es la salida cuando corres brew install node?
Updating Homebrew... ==> Auto-updated Homebrew! Updated 1 tap (homebrew/cask). No changes to formulae. Warning: node 13.8.0 is already installed, it's just not linked You can use brew link node` para vincular esta versión.`
A continuación, corresudo chmod 776 /usr/local/lib