Node Version that my docker image has = v12.3.0
NPM version = 6.9.0
下面是 package.json
文件,其中列出了应用程序的所有依赖项。
{
..
},
"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
当它到达以下命令时:RUN npm install
编译了一段时间后,它会引发以下错误:
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! node-sass@4.11.0 postinstall: `node scripts/build.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the node-sass@4.11.0 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
我需要做什么才能使其正常工作?
来自同一错误的更多信息。
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>
^
据我了解,它应该通过npm install解决所有依赖关系,但似乎不能。。我确定package.json文件与Dockerfile中的工作目录位于同一目录中。
答案 0 :(得分:2)
您报告的问题可能与使用node
最新版本有关。我建议坚持使用最新的LTS
版本(稳定),当前版本为10.15.3
。
在我的主机(windows10)和docker容器上成功完成运行npm i
并至少运行package.json
(显然包括具有您提供的依赖关系的部分)。
这是我的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
如果您仍然面临问题,那么角度应用可能有问题。
答案 1 :(得分:0)
如果您想使用Node 11(可能在上面),则会出现以下问题:
Angular CLI: 7.0.3 Cannot find module 'node-sass'
我在评论中建议更新node-sass
依赖性(如果尚未列出,则将其添加为显式依赖性)。这为我解决了这个问题。
或者(也许更干净),如果将依赖项@angular-devkit/build-angular
(包含node-sass
的依赖项)更新到当前版本,应该会有所帮助-对我来说,使用^0.13.9
解决了节点11的问题。
无论如何,我建议:
Dockerfile