1
Node Version that my docker image has = v12.3.0
NPM version = 6.9.0

below is the package.json file, which lists all the dependencies for the app.

{
  ..
  },
  "private": true,
  "dependencies": {
    "@agm/core": "1.0.0-beta.5",
    "@angular/animations": "7.2.1",
    "@angular/cdk": "7.2.1",
    "@angular/common": "7.2.1",
    "@angular/compiler": "7.2.1",
    "@angular/core": "7.2.1",
    "@angular/flex-layout": "7.0.0-beta.23",
    "@angular/forms": "7.2.1",
    "@angular/http": "7.2.1",
    "@angular/material": "7.2.1",
    "@angular/material-moment-adapter": "7.2.1",
    "@angular/platform-browser": "7.2.1",
    "@angular/platform-browser-dynamic": "7.2.1",
    "@angular/router": "7.2.1",
    "@ngrx/effects": "7.1.0",
    "@ngrx/router-store": "7.1.0",
    "@ngrx/store": "7.1.0",
    "@ngrx/store-devtools": "7.1.0",
    "@ngx-translate/core": "11.0.1",
    "@swimlane/dragula": "3.7.3",
    "@swimlane/ngx-charts": "10.0.0",
    "@swimlane/ngx-datatable": "14.0.0",
    "@swimlane/ngx-dnd": "6.0.0",
    "@types/prismjs": "1.9.0",
    "angular-calendar": "0.26.4",
    "angular-in-memory-web-api": "0.8.0",
    "chart.js": "2.7.3",
    "ci": "1.0.0",
    "classlist.js": "1.1.20150312",
    "core-js": "2.6.2",
    "d3": "5.7.0",
    "date-fns": "1.30.1",
    "hammerjs": "2.0.8",
    "html2canvas": "1.0.0-alpha.12",
    "jspdf": "1.5.3",
    "jwt-decode": "2.2.0",
    "lodash": "4.17.11",
    "moment": "2.24.0",
    "ng2-charts": "1.6.0",
    "ngrx-store-freeze": "0.2.4",
    "ngx-clipboard": "11.1.9",
    "ngx-color-picker": "7.3.0",
    "ngx-cookie-service": "2.1.0",
    "ngx-quill": "4.5.0",
    "ngx-socket-io": "2.1.1",
    "perfect-scrollbar": "1.4.0",
    "prismjs": "1.15.0",
    "rxjs": "6.3.3",
    "rxjs-compat": "6.3.3",
    "tslib": "^1.9.3",
    "web-animations-js": "2.3.1",
    "zone.js": "0.8.28"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "0.13.8",
    "@angular/cli": "7.2.2",
    "@angular/compiler-cli": "7.2.13",
    "@angular/language-service": "7.2.1",
    "@angularclass/hmr": "2.1.3",
    "@types/googlemaps": "3.30.19",
    "@types/jasmine": "3.3.7",
    "@types/jasminewd2": "2.0.6",
    "@types/lodash": "4.14.120",
    "@types/node": "10.12.18",
    "codelyzer": "4.5.0",
    "jasmine-core": "3.3.0",
    "jasmine-spec-reporter": "4.2.1",
    "karma": "3.1.4",
    "karma-chrome-launcher": "2.2.0",
    "karma-coverage-istanbul-reporter": "2.0.4",
    "karma-jasmine": "2.0.1",
    "karma-jasmine-html-reporter": "1.4.0",
    "node-sass": "4.11.0",
    "protractor": "5.4.2",
    "quill": "1.3.6",
    "ts-node": "8.0.1",
    "tslint": "5.12.1",
    "typescript": "3.2.4",
    "webpack-bundle-analyzer": "3.0.3"
  }
}

Dockerfile

FROM node as builder

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

COPY package*.json /usr/src/app/
RUN npm install


COPY . /usr/src/app

RUN npm run-script build

when it reaches this command: RUN npm install after compiling for a while, it throws this error:

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] postinstall: `node scripts/build.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] postinstall 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/2019-05-24T06_30_43_945Z-debug.log

what do I need to do to get it work??

more from same error..

In file included from ../../nan/nan.h:53:0,
                 from ../src/binding.cpp:1:
/root/.node-gyp/12.3.0/include/node/node.h:107:24: fatal error: util-inl.h: No such file or directory
 #  include <util-inl.h>
                        ^

as far as I understand, it should resolve all dependencies via npm install, but it seems it can't.. I'm sure the file package.json file is in the same dir as my working dir in Dockerfile..

6
  • You’ll probably need to update the SASS dependency. Commented May 24, 2019 at 6:44
  • Does the angular app build successfully on host machine? Commented May 24, 2019 at 6:47
  • @leopal you mean direct on ubuntu? Well It throws error on npm install command from package.json, but it was for other dependencies. package.json should include all dependencies for app, no? Commented May 24, 2019 at 6:55
  • @qqilihq I added a line as npm install [email protected] and it threw same error Commented May 24, 2019 at 6:57
  • @Sollosa I mean directly on your docker's host machine, yes. If it still throws an error on host then this is not docker issue, but problem with angular app and its dependencies. Please update your OP to include your package.json along with node and npm versions. Commented May 24, 2019 at 7:03

2 Answers 2

2

Your reported issue is possibly related to the use of node latest version. I would recommend to stick to the the latest LTS version(stable), which is currently 10.15.3.

Running npm i with a minimum package.json(obviously including the part with the dependencies you provided) finished successfully on my host machine(windows10) and on a docker container.

This is my Dockerfile:

FROM node:10.15.3-alpine
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app   
#it seems git is required for the build process
RUN apk add git 
COPY package*.json /usr/src/app/
RUN npm i

If you still facing issues then something is wrong with angular application.

Sign up to request clarification or add additional context in comments.

2 Comments

ok it went fine ahead, but now I'm stuck at very last step: RUN npm run-script build... It's giving following error: npm ERR! missing script: build
Glad to help. This is another issue though, thus it should be posted as a new question including all required information.
0

In case you want to use Node 11 (and supposedly above), there’s the following issue:

Angular CLI: 7.0.3 Cannot find module 'node-sass'

I suggested in the comments to update the node-sass dependency (or add it as explicit dependency, if it’s not listed already). This fixed the issue for me.

Alternatively (and probably cleaner), it should help if you update the dependency @angular-devkit/build-angular (this is the one which contains node-sass) to a current version -- for me using ^0.13.9 solved the issue with Node 11.

Anyways, I’d suggest:

  • using an LTS version in your Docker image, as suggested by leopal
  • explicitly pinning this version in the Dockerfile

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.