La instalación de npm falla en la reconstrucción de node-gyp y libpq

La instalación de npm falla en la reconstrucción de node-gyp y libpq
> [email protected] install /home/johnsoct/bobtail/node_modules/libpq
> node-gyp rebuild

/home/johnsoct/.nvm/versions/node/v12.22.4/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin/node-gyp: line 5: /usr/local/lib/node_modules/node-gyp/bin/node-gyp.js: No such file or directory

He leído el error y no, no hay nada instalado en /usr/local/lib/... Cuando instalo node-gyp globalmente, no se instala allí.

He intentado:

  • reinstalar postgres (https://fedoraproject.org/wiki/PostgreSQL)
  • instalando libpq para fedora
  • reiniciando 512394823094 veces
  • eliminando node_modules y reinstalando (una y otra vez esperando que suceda algo mágico)
  • eliminando package-lock.json y reinstalando
  • algunas otras cosas que he olvidado hace mucho tiempo

Una pequeña pista que conozco: el paquete que NO se instala npm installes pg-native. No estoy seguro de que eso marque la diferencia, pero supongo que está relacionado ya que libpqse menciona en el informe de instalación.

Si tienes curiosidad, así es como se ve mi RUTA (originalmente instalé y desinstalé postgres usando linuxbrew): /home/johnsoct/bin:/usr/pgsql-10/bin:/usr/pgsql-10/bin:/home/linuxbrew/.linuxbrew/opt/postgresql@10/bin:/home/johnsoct/bin:/home/linuxbrew/.linuxbrew/opt/postgresql@10/bin:/home/johnsoct/.nvm/versions/node/v12.22.4/bin:/home/johnsoct/.local/bin:/home/johnsoct/bin:/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/var/lib/snapd/snap/bin

Cualquier consejo/sugerencia sería realmente útil... Estoy perdiendo la cabeza aquí.

Respuesta1

Esto es muy descabellado, pero como tuve los mismos problemas al compilar solo libpq usando node-gyp, pensé en compartir mi solución de todos modos, por si acaso.

Mi resultado de error se veía así:

$ npm install
npm ERR! code 1
npm ERR! path /home/ekik/Source/home/grafana/node_modules/libpq
npm ERR! command failed
npm ERR! command sh -c -- node-gyp rebuild
npm ERR! node:internal/modules/cjs/loader:936
npm ERR!   throw err;
npm ERR!   ^
npm ERR! 
npm ERR! Error: Cannot find module 'object-assign'
npm ERR! Require stack:

Comenzó a suceder cuando actualicé de NodeJS 14 a 16 o 18 en Manjaro Linux. Aparentemente, el paquete node-gyp que se envía utiliza toneladas de material obsoleto (recopilado de los registros de instalación de npm), que aparentemente ya no está instalado de forma predeterminada.

Mi solución muy sucia fue simplemente:

sudo npm install --global object-assign code-point-at number-is-nan request

Tenga en cuenta que esto contamina sus node_modules globales.

información relacionada