Node.js приложение работает на локальном хосте, но выдает ошибку 404 на Heroku - PullRequest
0 голосов
/ 13 марта 2020

Я новичок в Heroku и Node.js. На локальном хосте работает нормально, но на Heroku выдает эту ошибку.

404 Не найдено

Я застрял в этой проблеме на неделю. Я искал на inte rnet, но не могу найти рабочее решение. Я также добавил Config Vars в Heroku в настройках. В моем клиентском приложении React я вызываю этот «https://work.herokuapp.com/events/daily» API для получения данных. полный код моего сервера:

const express = require('express');
const pg = require('pg');

const app = express();
require('dotenv').config();

const pool = new pg.Pool();

const queryHandler = (req, res, next) => {
  pool.query(req.sqlQuery).then((r) => {
    return res.json(r.rows || [])
  }).catch(next)
}

app.get('/', (req, res, next) => {
  res.header("Access-Control-Allow-Origin", "*");
  res.send('Welcome  ?');
})

app.get('/events/hourly', (req, res, next) => {
  res.header("Access-Control-Allow-Origin", "*");
  req.sqlQuery = `
    SELECT date, hour, events
    FROM public.hourly_events
    ORDER BY date, hour
    LIMIT 50;
  `
  return next()
}, queryHandler)

app.get('/events/daily', (req, res, next) => {
  res.header("Access-Control-Allow-Origin", "*");
  req.sqlQuery = `
    SELECT date, SUM(events) AS events
    FROM public.hourly_events
    GROUP BY date
    ORDER BY date
    LIMIT 7;
  `
  return next()
}, queryHandler)

app.get('/stats/hourly', (req, res, next) => {
  res.header("Access-Control-Allow-Origin", "*");
  req.sqlQuery = `
    SELECT poi_id, date, hour, impressions, clicks, revenue
    FROM public.hourly_stats
    ORDER BY date, hour
    LIMIT 168;
  `
  return next()
}, queryHandler)

app.get('/stats/daily', (req, res, next) => {
  res.header("Access-Control-Allow-Origin", "*");
  req.sqlQuery = `
    SELECT date,
        SUM(impressions) AS impressions,
        SUM(clicks) AS clicks,
        SUM(revenue) AS revenue
    FROM public.hourly_stats
    GROUP BY date
    ORDER BY date
    LIMIT 10;
  `
  return next()
}, queryHandler)

app.get('/poi', (req, res, next) => {
  res.header("Access-Control-Allow-Origin", "*");
  req.sqlQuery = `
  SELECT *
  FROM public.poi;
  `
  return next()
}, queryHandler)

app.get('/join/poi/stats_hourly', (req, res, next) => {
  res.header("Access-Control-Allow-Origin", "*");
  req.sqlQuery = `
  SELECT DISTINCT *
  FROM public.poi, public.hourly_stats
  WHERE public.poi.poi_id = public.hourly_stats.poi_id
  LIMIT 10;
  `
  return next()
}, queryHandler)

app.listen(process.env.PORT || 5555, (err) => {
  if (err) {
    console.error(err)
    process.exit(1)
  } else {
    console.log(`Running on ${process.env.PORT || 5555}`)
  }
})

// last resorts
process.on('uncaughtException', (err) => {
  console.log(`Caught exception: ${err}`)
  process.exit(1)
})
process.on('unhandledRejection', (reason, p) => {
  console.log('Unhandled Rejection at: Promise', p, 'reason:', reason)
  process.exit(1)
})

1 Ответ

0 голосов
/ 14 марта 2020

В Heroku в разделе «Дополнительно» в правом верхнем углу панели инструментов приложения вы можете «Просмотреть журналы», чтобы увидеть, правильно ли оно раскручивается и появляются ли какие-либо ошибки.

Make Обязательно установите Procfile, который сообщит Heroku, что на самом деле нужно запускать на dynos.

Синтаксис прост:

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