Получение ошибки: запрос не выполнен с кодом состояния 404 при createError (C:Usersxxxxxxxxxnode_modulesaxioslibcorecreateError.js:16:15 ) на маршруте

#javascript #node.js #express #slack-api

#javascript #node.js #экспресс #slack-api

Вопрос:

Я пытаюсь воспроизвести что-то очень похожее на это https://github.com/leighhalliday/slack-app-demo

Единственными отличиями являются файлы .env conf и ссылки на веб-ссылки, и я использую express-promise-router вместо express.Router() потому что код в вышеупомянутом проекте Github выдаст неразрешенные ошибки обещания. Предлагалось использовать express-promise-router, который помог с неразрешенными обещаниями, но создал еще одну проблему.

Если я перейду к http://localhost:3000/alert Я получаю это в терминале:

Ошибка ПОЛУЧЕНИЯ / оповещения 500 2055.126 мс — 759: запрос не выполнен с кодом состояния 404 при createError (C:Usersxxxxxxxxxnode_modulesaxioslibcorecreateError.js:16:15 ) при поселении (C:Usersxxxxxxxxxxxxnode_modulesaxioslibcoresettle.js:17:12 ) при входящем сообщении.handleStreamEnd (C:Usersxxxxxxxxxxnode_modulesaxioslibadaptershttp.js:244:11 ) при входе в Message.emit (events.js:327:22) при завершении чтения (_stream_readable.js:1327:12) в processTicksAndRejections (internal/process/task_queues.js:80:21)

Моя папка выглядит так:

Папки с файлами

Соответствующий код выглядит следующим образом, App.js:

 require("dotenv").config();
var express = require("express");
var path = require("path");
var cookieParser = require("cookie-parser");
var logger = require("morgan");
var router = require('express-promise-router')();

var indexRouter = require("./routes/index");
var alertRouter = require("./routes/alert");

var app = express();

app.use(router);
app.use(logger("dev"));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, "public")));

app.use("/", indexRouter);
app.use("/alert", alertRouter);

module.exports = app;
 

Index.js:

 var express = require('express');
var router = require('express-promise-router')();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

module.exports = router;
 

И Alert.js , Я сильно подозреваю, что проблема где-то здесь:

 const Axios = require("axios");
var express = require("express");
var router = require('express-promise-router')();

router.get("/", async function (req, res, next) {
  const symbol = "SHOP";
  const result = await Axios.get(
    `https://www.alphavantage.co/query?function=TIME_SERIES_DAILYamp;symbol=${symbol}amp;apikey=${process.env.API_KEY}`
  );
 
  const lastRefreshed = result.data["Meta Data"]["3. Last Refreshed"];
  const lastClose =
    result.data["Time Series (Daily)"][lastRefreshed]["4. close"];

    console.log(lastClose);

  await Axios.post(
    `https://hooks.slack.com/services/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`,
    {
      blocks: [
        {
          type: "section",
          text: {
            type: "mrkdwn",
            text: `Alert! Alert! *${symbol}* is now $${lastClose}. <https://www.google.com/search?q=NYSE: ${symbol}|View on Google Finance>`,
          },
        },
      ],
    }
  );

  res.json({
    lastClose,
    date: new Date().toISOString(),
  });
});

module.exports = router;
 

Итак, что я здесь не так? Имеет ли смысл использовать код, как в самой первой ссылке на исходный проект Github, и обрабатывать неразрешенные обещания (и как) или лучше продолжить с express-promise-router?

Я не уверен, что правильно инициализировал и / или экспортировал express-promise-router. Спасибо за любые решения и предложения.

Комментарии:

1. В axios все, что отличается от 200, рассматривается как ошибка. Проверьте первый запрос Axios, возможно, оттуда возникла ошибка.

2. @Vibhas как бы мне это проверить? Я не знаком с зависимостями отладки, любая помощь была бы отличной