Приложение node.js / express, размещенное на сервере Digital Ocean, отображает сообщение Не удается получить / ошибка - PullRequest
0 голосов
/ 04 ноября 2018

Посмотрев онлайн и увидев бесчисленное множество разных ответов на разные ситуации, я все равно не смог найти решение, которое бы сработало для меня. Когда я пытаюсь запустить мой файл server.js локально, он работает нормально. Но когда я копирую свой репозиторий и пытаюсь запустить его в моей капле, я получаю эту ошибку:

Cannot GET /

Ниже приведен код моего server.js:

const express = require('express')
const path = require('path')
const history = require('connect-history-api-fallback')

const app = express()

const staticFileMiddleware = express.static(path.join(__dirname + '/dist'))

app.use(staticFileMiddleware)
app.use(history({
  disableDotRule: true,
  verbose: true
}))
app.use(staticFileMiddleware)

app.get('/', function (req, res) {
  res.render(path.join(__dirname + '/dist/index.html'))
})

var server = app.listen(process.env.PORT || 80, function () {
  var port = server.address().port
  console.log('App now running on port', port);
  console.log(path.join(__dirname + '/dist/index.html'));
})

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Проблема заключалась в том, что когда я клонировал свой репозиторий, он не выдвигал мою папку dist. Поэтому решение моей проблемы состояло в том, чтобы создать отдельный репозиторий и вручную нажать мою папку dist. Затем я использовал этот репо, чтобы подать свое приложение на мою каплю.

0 голосов
/ 04 ноября 2018

Я рекомендую начать с автоматически созданного экспресс-проекта, выполнив:

npm install -g express-generator
express --view=jade new-project-folder-name

... если вы сделаете это, DEBUG=* node bin/www запустит проект на порту 3000 с включенной отладкой.

Практически говоря, вы, вероятно, на самом деле не хотите запускать свой экспресс-проект на порту 80, а вместо этого вы хотите использовать надлежащий веб-сервер, такой как Nginx или Apache, а затем настроить его в качестве обратного прокси-сервера для вашего экспресса. приложение на локальном порту (вроде 3000). Также используйте UFW, чтобы уменьшить защитную поверхность вашего сервера.

Таким образом, вы также можете использовать Lets Encrypt, чтобы позволить веб-серверу управлять всей деятельностью, связанной с SSL, и оставить свое экспресс-приложение, чтобы просто беспокоиться о его бизнесе.

Для начала попробуйте запустить проект на порту 3000 и посетить сайт по адресу http://your -ip-address: 3000 и посмотреть, получите ли вы другой результат. Если вы это сделаете, вам, вероятно, нужно использовать Интернет, чтобы собрать воедино решение, похожее на то, что я описал выше. В этом отношении уроки Digital Ocean довольно хороши.

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