He estado tratando de ejecutar una instalación npm en mi archivo package.json, pero tengo muchos problemas. Sigue diciendo "Error: intento de desbloquear XXX, que no ha sido bloqueado" en todas mis dependencias. Aquí hay uno de ellos:
Error: Attempt to unlock tbd@~0.6.4, which hasn't been locked
at unlock (/usr/local/lib/node_modules/npm/lib/cache.js:1304:11)
at cb (/usr/local/lib/node_modules/npm/lib/cache.js:646:5)
at /usr/local/lib/node_modules/npm/lib/cache.js:655:20
at /usr/local/lib/node_modules/npm/lib/cache.js:1290:7
at /usr/local/lib/node_modules/npm/node_modules/lockfile/lockfile.js:167:38
at OpenReq.Req.done (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:144:5)
at OpenReq.done (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:64:22)
at Object.oncomplete (fs.js:107:15)
Si intento ejecutarlo como sudo, parece ir más allá y comenzar a instalar algunos paquetes, pero en su lugar aparecen algunos errores nuevos:
> chokidar@0.8.1 postinstall /Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/chokidar
> node setup-deps.js
shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied
node.js:811
var cwd = process.cwd();
^
Error: EACCES, permission denied
at Function.startup.resolveArgv0 (node.js:811:23)
at startup (node.js:58:13)
at node.js:902:3
npm ERR! error rolling back Error: ENOTEMPTY, rmdir '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/q'
npm ERR! error rolling back karma@0.10.9 { [Error: ENOTEMPTY, rmdir '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/q']
npm ERR! error rolling back errno: 53,
npm ERR! error rolling back code: 'ENOTEMPTY',
npm ERR! error rolling back path: '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/q' }
npm ERR! Error: ENOENT, chown '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/socket.io/lib/socket.io.js'
Recientemente actualicé mis instalaciones de nodo y npm. Entonces, tal vez eso tenga algo que ver con eso. Además, la mayor parte de mi desarrollo ha sido en la oficina y hoy estoy trabajando a través de VPN, así que quizás eso también tenga algo que ver con eso.
¿Algunas ideas?
node.js
npm
karma-runner
TJ Kirchner
fuente
fuente
Respuestas:
Según photusenigma en: https://github.com/npm/npm/issues/4815
Ejecute estos comandos en una ventana de terminal (nota: NO reemplace la parte $ USER ... ¡es un comando de Linux para obtener su usuario!):
... y ... si está en una Mac (como yo), y aún ve errores después de ejecutar estos comandos, ejecute este último y debería estar bien. (Le recomiendo que pruebe probar antes de hacer esto. ¡No me gusta cambiar los permisos en el directorio ENTERO / usr / local a menos que realmente parezca necesario!)
fuente
sudo chown -R `whoami` /usr/lib/node_modules/
chown
no cambió los permisos~/.npm/_locks
para mí.sudo chown -R myname ~/.npm/_locks
sudo chown -R $USER /usr/local/lib/node_modules
? Lo corrí antes de leer que no es una buena idea ..Trabajé con un compañero de trabajo esta tarde y descubrí cuál era el problema. Mi carpeta ".npm" en mi directorio personal era propiedad del usuario root en lugar de mí. No estoy seguro de qué pasó para causar eso. Tal vez instalé node o npm como administrador raíz en un punto. En cualquier caso, simplemente ejecuté
sudo chown -R [username] .npm
y finalmente pude ejecutarnpm install
comandos de mis proyectos nuevamente.fuente
~/tmp/
también, o cualquier ubicación que Node use como ubicación temporalEn mi caso, el problema era invocar npm con un usuario que no tiene un directorio HOME, por lo que, por ejemplo, el siguiente comando fallará:
La solución es proporcionar un directorio HOME, donde
someUser
tenga acceso de escritura:fuente
sudo -u someUser -i
, que inicia un nuevo shell de inicio de sesión. Investigué esto un poco más y el código de almacenamiento en caché en npm usa la variable npm.cache, que supongo es la predeterminada$HOME/.npm/
. sudo también puede tener un comportamiento diferente con lo que se configura la variable HOME dependiendo de la configuración y la presencia o ausencia de opciones de línea de comando.Tuve el mismo problema y lo solucionó cambiando las persistencias según la respuesta aceptada:
Sin embargo, el segundo comando debe evitarse ya que degrada los permisos de un recurso del sistema (
sudo chown -R $USER /usr/local/lib/node_modules
). No es Buena idea.Para el registro: "usr" en
/usr/local
significa recursos del sistema Unix .fuente
Nada de esto funcionó para mí. Tuve que ejecutar literalmente como root haciendo lo siguiente:
Luego el paquete instalado en Linux Ubuntu 14.04.
fuente
El siguiente comando debería solucionar los problemas de permisos:
Puede leer sobre otras soluciones recomendadas oficialmente aquí:
https://docs.npmjs.com/getting-started/fixing-npm-permissions
fuente
Mi solución:
en mi caso fue:
Pero estaba teniendo el mismo problema, finalmente después
funcionó !
fuente
Tuve el mismo problema e intenté arreglar el permiso / propiedad de los archivos y directorios relacionados con npm durante horas, pero no tuve suerte con eso.
De repente descubrí que tenía un
~/.npmrc
archivo concache
entrada que apuntaba a un directorio no existente. Se eliminó esacache
propiedad para usar la ubicación de caché predeterminada y ahora está resuelta.fuente
Descargo de responsabilidad
Soy un usuario de Windows Sin embargo, mi equipo y yo nos hemos encontrado con varios problemas relacionados con los errores de instalación de npm.
Problemas
La siguiente es una lista de lecciones aprendidas y una posible solución radical que siempre nos ha rescatado:
Habilite los registros npm para obtener más información sobre posibles problemas con:
npm install --loglevel verbose
Radical
Instalar rimraf a nivel mundial
Ejecute rimraf en node_modules :
Entonces intente ejecutar:
¡Advertencia!
O la falta de ello. Tenga mucho cuidado con lo que sigue al comando
rimraf
. No hay advertencias, no hay indicaciones, no hay nada. Simplemente borra el directorio de la fase de limpieza de la tierra, como si nunca hubiera estado allí. Pruébalo bajo tu propio riesgo.fuente