Получение ошибки Heroku H10 при попытке развернуть Strapi, MongoDB Atlas - PullRequest
0 голосов
/ 08 мая 2020

Итак, я внимательно следил за документами для Strapi и Heroku (с MongoDb Atlas, уже подключенным к Strapi), и, возможно, я пропустил что-то важное. Когда я развертываю приложение, сайт немного загружается, а затем вылетает. Команда heroku logs --tail показывает это:

2020-05-08T14:41:59.625984+00:00 app[web.1]: (node:23) Warning: Accessing non-existent property 'findOne' of module exports inside circular dependency
2020-05-08T14:41:59.626067+00:00 app[web.1]: (node:23) Warning: Accessing non-existent property 'remove' of module exports inside circular dependency
2020-05-08T14:41:59.626134+00:00 app[web.1]: (node:23) Warning: Accessing non-existent property 'updateOne' of module exports inside circular dependency
2020-05-08T14:42:04.000000+00:00 app[api]: Build succeeded
2020-05-08T14:42:29.627137+00:00 app[web.1]: [2020-05-08T14:42:29.626Z] debug ⛔️ Server wasn't able to start properly.
2020-05-08T14:42:29.627879+00:00 app[web.1]: [2020-05-08T14:42:29.627Z] error Error connecting to the Mongo database. Server selection timed out after 30000 ms
2020-05-08T14:42:29.640717+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2020-05-08T14:42:29.640989+00:00 app[web.1]: npm ERR! errno 1
2020-05-08T14:42:29.641812+00:00 app[web.1]: npm ERR! back-end-4@0.1.0 start: `strapi start`
2020-05-08T14:42:29.641895+00:00 app[web.1]: npm ERR! Exit status 1
2020-05-08T14:42:29.641997+00:00 app[web.1]: npm ERR!
2020-05-08T14:42:29.642078+00:00 app[web.1]: npm ERR! Failed at the back-end-4@0.1.0 start script.
2020-05-08T14:42:29.642155+00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
2020-05-08T14:42:29.649687+00:00 app[web.1]: 
2020-05-08T14:42:29.649822+00:00 app[web.1]: npm ERR! A complete log of this run can be found in:
2020-05-08T14:42:29.649879+00:00 app[web.1]: npm ERR!     /app/.npm/_logs/2020-05-08T14_42_29_643Z-debug.log
2020-05-08T14:42:29.758124+00:00 heroku[web.1]: State changed from starting to crashed

2020-05-08T14:42:30.872518+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=hidden-headland-71392.herokuapp.com request_id=2eb6e39a-875b-4b2c-91cd-3b2bdd914561 fwd="81.128.178.133" dyno= connect= service= status=503 bytes= protocol=https
2020-05-08T14:42:31.888706+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=hidden-headland-71392.herokuapp.com request_id=d96ec78a-83ea-48ca-b576-0ad62d0a15da fwd="81.128.178.133" dyno= connect= service= status=503 bytes= protocol=https

Мой сервер. json файлов во всех 3 папках, разработке, производстве и постановке:

{
  "host": "${process.env.HOST || '0.0.0.0'}",
  "port": "${process.env.PORT || 1337}",
  "production": true,
  "proxy": {
    "enabled": false
  },
  "cron": {
    "enabled": false
  },
  "admin": {
    "autoOpen": false
  }
}

Я не уверен насчет Procfile, так как это файл в моем базовом каталоге без расширения, но со строкой:

 web: node strapi start

И для справки мой package.json выглядит так:

{
  "name": "back-end-4",
  "private": true,
  "version": "0.1.0",
  "description": "A Strapi application",
  "scripts": {

    "develop": "strapi develop",
    "start": "strapi start",
    "build": "strapi build",
    "strapi": "strapi"
  },

А мой database.json файл выглядит так:

{
  "defaultConnection": "default",
  "connections": {
    "default": {
      "connector": "mongoose",
      "settings": {
        "uri": "${process.env.DATABASE_URI}",
        "database": "${process.env.DATABASE_NAME}"
      },
      "options": {
        "ssl": true
      }
    }
  }
} 

Ответы [ 4 ]

1 голос
/ 11 мая 2020

FWIW - У меня были похожие проблемы. Я думал, что внес в белый список все IP-адреса на Mongodb, но этого не сделал. Этот шаг не включен в видео, указанное выше, и, судя по выходным данным, записанным на вашу консоль, я предполагаю, что у вас такая же проблема.

Этот параметр можно найти в Mongodb в разделе Безопасность> Доступ к сети> Добавить IP-адрес> Если вы используете 0.0.0.0/0, он заносит в белый список все, что Heroku бросает на него.

1 голос
/ 09 мая 2020

Вот видео по развертыванию вашего приложения Strapi с Heroku + MongoDB Atlas

https://www.youtube.com/watch?v=HHnRsZwFmR8&list=PL7Q0DQYATmvhlHxHqfKHsr-zFls2mIVTi&index=11&t=0s

0 голосов
/ 24 августа 2020

Я столкнулся с той же проблемой, мне пришлось убедиться в трех вещах:

  • Во-первых, обязательно прочтите правильную документацию. На данный момент документация Heroku в strapi перенаправляет на бета-версию, и после этого руководства были обнаружены все эти ошибки. Я должен был обязательно следовать документации текущей версии.
  • Node version. При развертывании на Heroku автоматически устанавливается последняя версия узла, что может вызвать ошибку sh. Проверьте свою локальную версию и используйте ее в своем приложении heroku, указав ее в разделе «Engine» вашего пакета. json
  • недостающие зависимости. Некоторые модули, необходимые для моего приложения, были установлены и кэшированы на моем компьютере, поэтому при запуске моего приложения не возникало никаких ошибок. К сожалению, я никогда не устанавливал их в своем приложении, поэтому при развертывании возникали некоторые ошибки. Мне пришлось полностью удалить package-lock.jcon и node_modules, затем npm install, дважды проверить мои журналы развертывания, используя heroku logs --tail, чтобы увидеть, остались ли какие-либо недостающие зависимости.

После проверки все и это, мне наконец удалось развернуть свое приложение.

0 голосов
/ 24 мая 2020

Я не использую Heroku, но подумал, что могу поделиться своей базой данных. json. Может быть, вы можете попробовать и посмотреть, что из этого выйдет.

{
  "defaultConnection": "default",
  "connections": {
    "default": {
      "connector": "mongoose",
      "settings": {
            "uri": "mongodb://localhost:27017/mydatabase",
        "database": "mydatabase",
        "host": "127.0.0.1",
        "srv": false,
        "port": 27017,
        "username": "myusername",
        "password": "mypassword"
      },
      "options": {
            "ssl": false
      }
    }
  }
}
...