#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 как бы мне это проверить? Я не знаком с зависимостями отладки, любая помощь была бы отличной