Настройка файла app.yaml для Node.js и развертывания React. js в App Engine - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь развернуть свой проект, в котором есть каталог на стороне сервера и на стороне клиента. Я также использую pm2 для загрузки служб для обеих сторон ... Вот каталог структуры папки :

MyProject
+-- server
|   --- app.js
|   --- app.yaml
|   --- package.json
+-- client
|   +-- build
|       --- index.html
|   --- package.json
|....
--- .gitignore

Серверный скрипт пакета. json

{...
"scripts": {
    "client": "npm start --prefix ../client",
    "deploy": "gcloud app deploy app.yaml",
    "dev": "concurrently \"npm run build\" \"npm run client\"",
    "start": "pm2 start app.config.json"
  },
...
}

app.config. json файл, потому что я использую pm2:

{
    "apps" : [
        {
            "name"      : "clientApp",
            "script": "node",
            "args"    : "../client/scripts/start.js"
        },
        {
            "name"      : "serverApp",
            "script"    : "node",
            "args": "./bin/www"
        }
    ]
  }

app. js

app.use(express.static(path.join(__dirname, '../client/build')));

Это настройка для Сервера. Теперь вот клиентская сторона . пакет. json

"scripts": {
    "start": "pm2 start scripts/start.js --name clientApp",
    "build": "node scripts/build.js",
    "serve": "serve -s build -l 8080",
  },
  "proxy": "http://localhost:5000",

Самое главное, app.yaml :

runtime: nodejs
env: flex

handlers:
  - url: /api/.*
    script: auto
  - url: /
    static_files: client/build/index.html
    upload: client/build/index.html
  - url: /
    static_dir: client/build
  - url: /static
    static_dir: client/build/static
  - url: /.*
    secure: always
    redirect_http_response_code: 301
    script: auto

manual_scaling:
  instances: 1

resources:
  cpu: 2
  memory_gb: 8.0
  disk_size_gb: 20

Я получаю ошибку: Ошибка запуска приложения ! Код: APP_CONTAINER_CRASHED, почему это происходит? Неправильно ли я поставил каталог на стороне клиента в app.yaml ???

ERROR: (gcloud.app.deploy) Error Response: [9] 
Application startup error! Code: APP_CONTAINER_CRASHED
yarn run v1.17.3
$ pm2 start app.config.json
...
...
...
[PM2] Spawning PM2 daemon with pm2_home=/root/.pm2
[PM2] PM2 Successfully daemonized
[PM2][WARN] Applications clientApp, serverApp not running, starting...
[PM2] App [clientApp] launched (1 instances)
[PM2] App [serverApp] launched (1 instances)
┌─────┬──────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name         │ namespace   │ version │ mode    │ pid      │ uptime │ \u21ba    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼──────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ clientApp    │ default     │ N/A     │ fork    │ 50       │ 0s     │ 0    │ online    │ 0%       │ 28.2mb   │ root     │ disabled │
│ 1   │ serverApp    │ default     │ N/A     │ fork    │ 56       │ 0s     │ 0    │ online    │ 0%       │ 25.4mb   │ root     │ disabled │
└─────┴──────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
Done in 2.05s.

error Command failed with exit code 1.

1 Ответ

0 голосов
/ 30 марта 2020

Учитывая ошибку, с которой вы сталкиваетесь, и в других случаях, когда пользователи сталкивались с ошибкой, аналогичной вашей, - как в этом другом сообщении сообщества здесь - кажется, что App Engine использует метод, который устарел. Этот метод называется single_from_classes, и его следует заменить на новый - используйте load_learner - чтобы ошибка прекратилась.

Я бы порекомендовал вам проверить предоставленный ответ здесь и измените код, чтобы больше не использовать этот устаревший метод, чтобы развертывание происходило правильно.

В случае, если этого недостаточно, вы можете попытаться реорганизовать код и настроить его структуру по-другому. Как упоминалось в этом другом ответе сообщества - доступно здесь - может также потребоваться выполнить установку какого-либо пакета - например, с помощью команды npm install --save @google-cloud/datastore - так что, возможно, стоит проверить официальная документация от Клиентские библиотеки тоже.

Дайте мне знать, помогла ли вам информация!

...