cuando escribo "npm run build:prod"
build:prod npm run build -- --configuration production --aot --optimization=falseme sale este error:
> fancy-name@0.0.0 build:prod > npm run build -- --configuration production --aot --optimization=false glob error [Error: EACCES: permission denied, scandir '/root/.npm/_logs'] { errno: -13, code: 'EACCES', syscall: 'scandir', path: '/root/.npm/_logs' } npm WARN logfile Error: EACCES: permission denied, scandir '/root/.npm/_logs' npm WARN logfile error cleaning log files [Error: EACCES: permission denied, scandir '/root/.npm/_logs'] { npm WARN logfile errno: -13, npm WARN logfile code: 'EACCES', npm WARN logfile syscall: 'scandir', npm WARN logfile path: '/root/.npm/_logs' npm WARN logfile } ⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠙ : WARN logfile Error: EACCES: permission denied, scandir '/root/.npm/_logs' > fancy-name@0.0.0 build > ng build "--configuration" "production" "--aot" "--optimization=false" Node.js version v17.4.0 detected.file Error: EACCES: permission denied, scandir '/root/.npm/_logs' Odd numbered Node.js versions will not enter LTS status and should not be used for production. For more information, please see https://nodejs.org/en/about/releases/. This version of CLI is only compatible with Angular versions ^13.0.0-next || >=13.0.0 <14.0.0,ogs' but Angular version 12.1.3 was found instead. Please visit the link below to find instructions on how to update Angular. https://update.angular.io/ ya intenté eliminar node_module & package.json y ejecuté la NPM install nuevamente, pero no funcionó (Linux 4.19.0-16-cloud-amd64)
EDITAR: resuelto con chown -R root /path/of/your/project
Esto es comprensiblemente un error confuso; ejecuta npm como root y, sin embargo, dice que no tiene acceso a los archivos? Hay una buena razón :) Estas preguntas son esencialmente sobre lo mismo:
Mi respuesta bastante larga entra en detalles sobre lo que está sucediendo, pero la esencia es esta:
(NPM) ... usa este fragmento de código para determinar quién ejecutar como:
const { uid, gid } = isRoot ? inferOwner.sync(cwd) : {}y como dice la documentación del módulo infer-owner: inferir el propietario de una ruta en función del propietario de su padre existente más cercano
Entonces, si está ejecutando NPM como root, también debe cambiar el propietario del directorio actual a root:
chown -R root /path/of/your/project Pero todo este problema debería indicarle la solución real: no ejecute NPM como root. No tiene idea de qué tipo de secuencias de comandos se pueden ejecutar como desencadenante postinstall a la instalación o similar. Cuidate; solo use la cuenta raíz cuando sea necesario usando sudo .
Como se menciona en la respuesta vinculada:
Este comportamiento es solo para las versiones de NPM >= 7. Las versiones de NPM < 7, que son las que se envían con el nodo 12-14, funcionan perfectamente bien cuando se ejecutan como root. Entonces, la solución más rápida podría ser simplemente usar el Nodo 14.
npm install -g nvmnvm use 14NPM se está esforzando mucho (ver otra respuesta para más detalles ) para no ejecutar nada como root. Entonces, ¿qué hay de intentar eso, no ser root? Tu harías algo como esto
adduser john.doe --disabled-passwordsudo -s -u john.doegit clone https://github.com/foo/bar; cd barnpm i;npm run build:proderror global [Error: EACCES: permiso denegado, scandir '/root/.npm/_logs'] {
Esto significa que está tratando de leer algo en el directorio 'raíz', algo que siempre necesita acceso de raíz.
Intenta ejecutar el comando de esta manera:
sudo npm run build:prodExtra: por lo general, NO debe ejecutar comandos con sudo. Si proviene de Windows, piense en ello como 'Ejecutar como administrador', solo que con aún más privilegios, por lo que si está ejecutando un script malicioso, podría tener acceso a casi todo en su sistema. Hay algunas bibliotecas JS que necesitan acceso root/sudo para hacer sus cosas.