При попытке развернуть приложение с полным стеком на Heroku получены неверные данные ответа - PullRequest
0 голосов
/ 26 мая 2020

Я хочу развернуть приложение full stack на heroku, но когда я пытаюсь войти в свое приложение, у меня есть другие данные res.data в Интернете. У меня должно быть:

{ userName: "userName", userId: 1, token: token", isAuthorized: true, error: ""}

, но у меня есть:

<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name="theme-color" content="#000000"><link rel="manifest" href="/manifest.json"><link rel="shortcut icon" href="/favicon.ico"><link rel="stylesheet" href="fontello/css/fontello.css"><title>React App</title><link href="/static/css/main.8a9a299b.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script type="text/javascript" src="/static/js/main.e17a5aa6.js"></script></body></html>

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

  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "tsc",
    "start": "node build/server.js",
    "client": "npm start --prefix client",
    "dev": "concurrently \"npm run client\" \"npm start\"",
    "heroku-postbuild": "npm run-script build && cd client && npm install && npm run build"
  },

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

const options: ConnectionOptions = {
  type: "sqlite",
  logging: true,
  database: "db/mydb.db",
  synchronize: true,
  entities: [
    "build/entity/**/*.js"
  ]
};

Это мой запрос на вход от клиента:

export const loginRequest = userData => dispatch => {
  dispatch({ type: LOGIN_REQUEST });
  return axios
    .create({ baseURL: `${baseUrl}` })
    .post("/api/login", userData)
    .then(res => {
      console.log(res.data);
      localStorage.setItem("token", res.data.token);
      dispatch(loginSuccess(res.data));
      dispatch(redirect("/"));
    })
    .catch(error => {
      dispatch(loginError(error));
    });
};

baseUrl: "https://react-app-map-creator.herokuapp.com"

project структура:

enter image description here

После POST у меня статус 200. Я пробовал много способов решить эту проблему. У меня нет никаких ошибок в моей консоли. Может кто-нибудь дать мне несколько советов, как решить эту проблему?

Я снова отредактировал. В моем файле маршрутов есть объект с:

  {
    path: "/api/login",
    method: "post",
    action: login
  }

и мой контроллер для входа:

export async function login(request: Request, response: Response) {
  const userRepository = getManager().getRepository(User);
  const userDB = await userRepository.findOne({
    login: request.body.login
  });

  const Reject = () => {
    return response.status(401).json({
      errorMessage: "login or password is incorrect"
    });
  };
  if (userDB) {
    bcrypt.compare(request.body.password, userDB.password, (err, res) => {
      if (res) {
        const userData = {
          login: request.body.login,
          userId: userDB.id,
          isAdmin: userDB.isAdmin
        };
        jwt.sign(
          { userData },
          "secretkey",
          { expiresIn: "86400s" },
          (err, token) => {
            response.json({
              userName: userDB.login,
              userId: userDB.id,
              token: token,
              isAuthorized: true,
              error: ""
            });
          }
        );
      } else {
        Reject();
      }
    });
  } else {
    Reject();
  }
}

PS Когда я использую npm run dev на локальном компьютере, все работает идеально.

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