`sh: 1: ng: not found`, когда я запускаю Google Cloud` gcloud app deploy` - PullRequest
0 голосов
/ 03 ноября 2019

Я посмотрел как Ошибка развертывания приложения Angular2 в Google Cloud , так и этой проблемы , и попробовал то, что они предлагают, но ни один из них не решил мою проблему. Ниже показано, как я настроил проект;если это имеет значение, я пытаюсь выполнить развертывание через Cloud Shell.

app.yaml:

runtime: custom
env: flex

manual_scaling: 
  instances: 1

Dockerfile:

FROM alpine:latest
MAINTAINER my-username

# update alpine linux
RUN apk update && apk upgrade && \ 
    apk add nodejs && \
    # may comment this line in my computer.
    apk add nodejs-npm && \
    npm install -g @angular/cli@8.3.15

# add source code to images
ADD . /my_project_name

# switch working directory
WORKDIR /my_project_name

# install dependencies
RUN npm install

# expose port 4200
EXPOSE 4200 

# run ng serve on localhost
CMD ["ng","serve", "--host", "0.0.0.0", "--disable-host-check"]

Я даже дважды проверяю, что яустановите его в моем package.json

"devDependencies": {
    "@angular-devkit/build-angular": "^0.803.17",
    "@angular/cli": "~8.3.15",
    "@angular/compiler-cli": "~8.2.12",
    "@angular/language-service": "~8.2.12",
    "@types/jasmine": "~3.3.8",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "~8.9.4",
    "codelyzer": "^5.0.0",
    "jasmine-core": "~3.4.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~4.1.0",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "~2.0.1",
    "karma-jasmine": "~2.0.1",
    "karma-jasmine-html-reporter": "^1.4.0",
    "protractor": "~5.4.0",
    "ts-node": "~7.0.0",
    "tslint": "~5.15.0",
    "typescript": "~3.5.3"
  }

И это, я думаю, единственные файлы, которые мне нужно включить. Ниже приведены журналы, когда я запускаю deploy:

> my_project@0.0.0 start /app
> ng serve

sh: 1: ng: not found
npm ERR! file sh
npm ERR! code ELIFECYCLE
... etc ...

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 03 ноября 2019

Вам не нужно устанавливать Angular CLI глобально

# update alpine linux
RUN apk update && apk upgrade && \ 
    apk add nodejs && \
    # may comment this line in my computer.
    apk add nodejs-npm && \
 # No need   npm install -g @angular/cli@8.3.15   

Вы должны иметь возможность npm start или yarn start вместо того, чтобы вызывать ng двоичный файл самостоятельно.

# run ng serve on localhost
# For NPM
CMD ["npm","start", "--" "--host", "0.0.0.0", "--disable-host-check"]

# For YARN (but you need to install yarn package manager first)
CMD ["yarn","start", "--host", "0.0.0.0", "--disable-host-check"]

С другой стороны: если вы пытаетесь выполнить развертывание в производственной среде, в идеале вам следует попытаться создать угловое приложение в режиме prod (npm build -- --prod), а затем статическую версию сервера HTML, CSS, JS файлов с использованием некоторого веб-сервера, такого как Caddy или nginx

...