Angular 6.0.3 не работает в Docker, потому что он не может найти module @ angular-devkit / build-angular - PullRequest
0 голосов
/ 23 мая 2018

Я пытался добавить свое приложение angular6 в среду docker-compose.Я создал проект локально, и он работает, но после docker-compose build и 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

Ответы [ 2 ]

0 голосов
/ 20 июня 2018

Я нашел проблему.

Я удалил строку в моем docker-compose.yml.

angular-ayaresa:
    build:
      context: build/angular
    ports:
          - "4200:4200"
    volumes:
      - ../source/angular:/usr/src/app/
      - /usr/src/app/node_modules/ // <-- this line
    container_name: angular-ayaresa
    networks:
      - ayaresa-network

Эта строка позволяет контейнеру игнорировать папку в томе.

Проблема была в том, что node_modules был включен в тома и Angular искал модуль "@angular-devkit/build-angular" из локального node_modules, а не в нем контейнер node_modules.

Я просто добавляю ignore node_modules ипроблема была решена.

0 голосов
/ 20 июня 2018

У вас есть ошибка в файле Docker, который вы сделали WORKDIR и установите его на / usr / src / app

Thisозначает, что контекст будет переключен на этот файл.

Так что, когда вы делаете 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.

ref: https://docs.docker.com/engine/reference/builder/#copy

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...