angular - Angular 6.0.3 在 docker 中不起作用,因为它找不到模块 @angular-devkit/build-angular
问题描述
我试图在docker-compose
环境中添加我的 angular6 应用程序。我在本地创建了项目并且它可以工作,但是在docker-compose build
and之后docker-compose up
,它会发送下一个错误:
angular6@0.0.0 start /usr/src/app
> ng serve --host 0.0.0.0 --disable-host-check -p 3000
Could not find module "@angular-devkit/build-angular" from "/usr/src/app".
Error: Could not find module "@angular-devkit/build-angular" from "/usr/src/app".
at Object.resolve (/usr/local/lib/node_modules/@angular/cli/node_modules/@angular-devkit/core/node/resolve.js:141:11)
at Observable.rxjs_1.Observable [as _subscribe] (/usr/local/lib/node_modules/@angular/cli/node_modules/@angular-devkit/architect/src/architect.js:132:40)
at Observable.subscribe (/usr/local/lib/node_modules/@angular/cli/node_modules/rxjs/internal/Observable.js:162:69)
at DoOperator.call (/usr/local/lib/node_modules/@angular/cli/node_modules/rxjs/internal/operators/tap.js:71:23)
at Observable.subscribe (/usr/local/lib/node_modules/@angular/cli/node_modules/rxjs/internal/Observable.js:159:22)
at /usr/local/lib/node_modules/@angular/cli/node_modules/rxjs/internal/util/subscribeTo.js:22:31
at Object.subscribeToResult (/usr/local/lib/node_modules/@angular/cli/node_modules/rxjs/internal/util/subscribeToResult.js:7:45)
at MergeMapSubscriber._innerSub (/usr/local/lib/node_modules/@angular/cli/node_modules/rxjs/internal/operators/mergeMap.js:132:38)
at MergeMapSubscriber._tryNext (/usr/local/lib/node_modules/@angular/cli/node_modules/rxjs/internal/operators/mergeMap.js:129:14)
at MergeMapSubscriber._next (/usr/local/lib/node_modules/@angular/cli/node_modules/rxjs/internal/operators/mergeMap.js:112:18)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! angular6@0.0.0 start: `ng serve --host 0.0.0.0 --disable-host-check -p 3000`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the angular6@0.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
angular-ayaresa |
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2018-05-23T10_03_17_591Z-debug.log
这是我的 Angular Dockerfile:
# Create image based on the official Node 8.10.0 image from dockerhub
FROM node:8.10.0
# Create a directory where our app will be placed
RUN mkdir -p /usr/src/app
# Change directory so that our commands run inside this new directory
WORKDIR /usr/src/app
# Copy dependency definitions
COPY ./quickstart /usr/src/app
# Install dependecies
RUN rm -rf node_modules/
RUN npm i --save
RUN npm i npm@latest -g
RUN npm install -g @angular/cli
# Expose the port the app runs in
EXPOSE 4200
# Serve the app
CMD ["npm", "start"]
该模块@angular-devkit/build-angular
已正确安装并包含在package.json
解决方案
您的 docker 文件中有错误,您执行了WORKDIR并将其设置为/usr/src/app
这意味着,上下文将切换到该文件。
所以当你这样做时COPY ./quickstart /usr/src/app
,这应该是COPY ./quickstart .
码头工人文档说
The <src> path must be inside the context of the build; you cannot COPY ../something /something, because the first step of a docker build is to send the context directory (and subdirectories) to the docker daemon.
推荐阅读
- javascript - 删除链式承诺
- angularjs - 在选择标签内添加一个额外的按钮作为选项,以便单击该按钮会打开另一个对话框
- python - 如何使用 pycrate 对 Attach Request NAS 消息进行编码
- r - 在 sparklyr 中使用 semi_join 时出现匹配错误
- javascript - 如何检查角度 8 中的刷新页面事件并显示一个对话框,要求用户重新加载或取消操作
- php - SQL Query 在一个参数中给出错误的输出
- python - 从 yatra.Com 的日期选择器中选择日期
- java - 如何在 JAVA 中使用立陶宛语特殊字母
- unit-testing - 如何在 azure Devops 中安装 Cobertura?
- java - 如何从 Antlr4 语法在控制台上打印一些东西