Отладка развертывания полнофункционального приложения в Heroku - PullRequest
0 голосов
/ 04 марта 2020

Я пытался развернуть мое полнофункциональное приложение для обмена сообщениями chatkit с локального хоста на работу с Heroku. Я не уверен, какие изменения необходимо внести в мой код, чтобы он правильно работал на heroku, поскольку в настоящее время я получаю ошибку 404 «Not Found».

Я добавил Procfile и Приложение. json файл, как кто-то рекомендовал. Я не уверен, виноваты ли мои пакеты. json Start-скрипты, или мне нужно обновить URL-адреса HTTP-запросов в моем коде (от localhost до URL сайта heroku).

Или, если мне нужно собрать sh приложение для производства и загрузить stati c файлы, с которыми я не очень разбираюсь. Код размещен на моем Github (https://github.com/aladin94/MyChatterbox). Что я делаю не так?

`{
  "name": "react-chat-tutorial",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@pusher/chatkit-client": "^1.0.2",
    "@pusher/chatkit-server": "^1.0.1",
    "cors": "^2.8.4",
    "express": "^4.16.3",
    "lodash": "^4.17.15",
    "lodash.template": "^4.5.0",
    "react": "^16.2.0",
    "react-dom": "^16.2.0",
    "react-scripts": "1.1.1",
    "concurrently": "^3.5.1"
  },
  "devDependencies": {
    "concurrently": "^3.5.1"
  },
  "scripts": {
    "start": "node server.js"
  },
  "engines": {
    "node": "10.14.1",
    "npm": "6.4.1"
  }
}
`

Ответы [ 2 ]

1 голос
/ 04 марта 2020

Мне удалось заставить его работать так.

1.

сервер. js

app.post('/authenticate', (req, res) => {
  const authData = chatkit.authenticate({ userId: req.query.user_id })
  res.status(authData.status).send(authData.body)
})

// if (process.env.NODE_ENV === 'production') { // This is your thang, I commented it out to reach a solution, but probably not necessary for you
  app.use(express.static('build')); // 'react-scripts build' places a /build directory at root, not /client/build

  app.get('*', (req, res) => {
    res.sendFile(path.resolve(__dirname, 'build', 'index.html')); // Removed client here also
  });
// }

Это запустилось нормально на моей машине, открыв главный экран для вашего приложения. ваш package.json:

"scripts": {
    "start": "node server.js",
    "build": "react-scripts build",
    "postinstall": "npm run build"
  },

Heroku запустит сценарий npm postinstall, как только он загрузит ваш код, и запустит для вас npm install.

1 голос
/ 04 марта 2020

Попробуйте поместить сборку в root проекта и измените код на:

app.use(express.static('build')) app.get('*', (req, res) => { res.sendFile(path.resolve(__dirname, 'build', 'index.html')) })

Чтобы запустить сборку, вам необходимо добавить в пакет сценарии . json: "build": "build-scripts build"

Изменить ваши c маршрутов http://localhost: 3001 / пользователей до "/ users" , поскольку внутренний и внешний интерфейс находятся на одном сервере.

...