node.js - No se puede compilar el proyecto Angular después de la actualización de la versión 8 a la 9
He realizado una actualización de mi proyecto Angular de la versión 8 a la 9 utilizando la herramienta ng update. Localmente (Windows) todo funciona bien, pero cuando intento construir el proyecto en Docker, obtengo el siguiente error:
Step 6/11 : RUN npm run build
---> Running in d60f739a56f6
> [email build /app
> ng build --prod
Compiling @angular/core : es2015 as esm2015
ERROR in EINVAL: invalid argument, rename '/app/node_modules/@angular/core/core.d.ts' -> '/app/node_modules/@angular/core/core.d.ts.__ivy_ngcc_bak'
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email build: `ng build --prod`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2020-03-20T11_44_02_696Z-debug.log
The command '/bin/sh -c npm run build' returned a non-zero code: 1
El dockerfile:
FROM node:13.10.1-stretch as base
RUN apt-get update -qq && apt-get install -y build-essential
ADD . /app
WORKDIR /app
RUN npm ci
RUN npm run build
Dependencias :
"dependencies": {
"@angular/animations": "^9.0.7",
"@angular/cdk": "^8.2.3",
"@angular/common": "^9.0.7",
"@angular/compiler": "^9.0.7",
"@angular/core": "^9.0.7",
"@angular/forms": "^9.0.7",
"@angular/material": "^8.2.3",
"@angular/platform-browser": "^9.0.7",
"@angular/platform-browser-dynamic": "^9.0.7",
"@angular/router": "^9.0.7",
"core-js": "^2.4.1",
"rxjs": "^6.5.4",
"rxjs-compat": "^6.0.0-rc.0",
"tslib": "^1.10.0",
"zone.js": "~0.10.2"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.900.7",
"@angular/cli": "^9.0.7",
"@angular/compiler-cli": "^9.0.7",
"@angular/language-service": "^9.0.7",
"@types/jasmine": "~2.8.3",
"@types/jasminewd2": "~2.0.2",
"@types/node": "^12.11.1",
"codelyzer": "^5.1.2",
"jasmine-core": "~2.8.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~2.0.0",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "^1.2.1",
"karma-jasmine": "~1.1.0",
"karma-jasmine-html-reporter": "^0.2.2",
"node-sass": "^4.13.1",
"protractor": "~5.1.2",
"ts-node": "~4.1.0",
"tslint": "~5.9.1",
"typescript": "~3.7.5"
}
¿Hay algo que pueda hacer para arreglarlo? Las imágenes para Angular 8 estaban bien. He probado diferentes imágenes de node, pero nada ayudó...
Respuesta #1
No estoy exactamente seguro de cuál es tu problema o qué lo está causando, pero hice una búsqueda rápida y me encontré con este problema en GitHub. Se refiere a compilaciones en paralelo (lo cual no creo que sea tu caso), pero pensé que aún podría aplicarse aquí ya que el error ocurre durante la compilación del núcleo de Angular.
La solución alternativa sugerida es ejecutar el compilador de compatibilidad de Angular (ngcc) como un script de postinstall, en lugar de que la compilación lo active por sí misma.
Modifica tu archivo package.json y añade lo siguiente en la sección scripts:
"postinstall": "ngcc
