Приложение Express React работает локально, но выдает ошибку при развертывании - PullRequest
0 голосов
/ 25 января 2019

Я уверен, что это было решено, но я не могу заставить это работать на меня.

локально мое репо работает с этим как мой

/ index.js

const express = require("express");
const keys = require("./config/keys");
const path = require("path");

const app = express();

app.use(express.static(__dirname));
app.use(express.static(path.join(__dirname, "public")));
app.use(express.urlencoded({ extended: true }));
app.use(express.json());

// uses fuzeRoutes
require("./routes/routes")(app);

app.get("*", function(req, res) {
  res.sendFile(__dirname, "public", "index.html");
});

app.listen(process.env.PORT || 5000, function() {
  console.log(
    "Express server listening on port %d in %s mode",
    this.address().port,
    app.settings.env
  );
});

package.json

  "scripts": {
    "client-install": "npm install --prefix client",
    "start": "node index.js",
    "server": "nodemon index.js",
    "client": "npm run start --prefix client",
    "dev": "concurrently \"npm run server\" \"npm run client\"",
    "heroku-postbuild": "cd client && npm install && npm run build"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "axios": "^0.18.0",
    "concurrently": "^4.1.0",
    "express": "^4.16.4",
    "http-proxy-middleware": "^0.19.1",
    "nodemon": "^1.18.9"
  }

теперь это работает локально снет проблем, но при развертывании heroku я получаю сообщение об ошибке at=error code=H13 desc="Connection closed without response" method=GET path="/"

при просмотре других вопросов, которые я вижу из-за "SSL termination occurs at Heroku's load balancers; they send your app plain (non-SSL) traffic, so your app should create a non-HTTPS server." при просмотре других заданных вопросов, я либо не понимаю решение, либо нетнайти правильную тему.

любая помощь будет оценена

ОБНОВЛЕНИЕ:

Мне удалось решить проблему с ошибкой H13.

Проблема заключалась в том, что

app.use(express.static(path.join(__dirname, "public")));
//
//
//
app.get("*", function(req, res) {
  res.sendFile(__dirname, "public", "index.html");
});

должно было быть:

   app.use(express.static(path.join(__dirname, "client/public")));
    //
    //
    //
    app.get("*", function(req, res) {
      res.sendFile(__dirname,"client", "public", "index.html");
    });

Проблема заключается в том, что при развертывании я получаю код состояния 200 с at=info method=GET path="/", ностраница возвращается пустойHTML-код страницы показывает, что в пути сборки есть <div id="root">, но страница не загружает реагирующие компоненты.

1 Ответ

0 голосов
/ 26 января 2019

Я развернул следующую экспресс-конфигурацию в Heroku для приложения create-реагировать на приложение:

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

app.get('*', function(_, res) {
  res.sendFile(path.join(__dirname, './client/public/index.html'), function(err) {
    if (err) {
      res.status(500).send(err)
    }
  })
})

Вы можете увидеть полный код здесь .

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