В previous question У меня что-то вроде этого работает.Запуск асинхронного кода при запуске экспресс-сервера
promiseRoute().bind(app).then(app.use)
То, что я не понимаю, в то время, что это правильно добавляет возвращаемый route
из обещания app.use
однако если последующее app.use
после этого заявления (например, вызова ошибки) выражает система маршрутизатора запускайте маршруты ошибок до того, как он выполнит обещанный маршрут.
Мне пришлось бы обернуть все звонки в цепочку обещаний и вернуть приложение из обещания, которое вызывает больше проблем, когда я должен его использовать.
Есть ли какая-либо система/библиотека/etc для управления этим?
Я принципиально хочу запустить асинхронную функцию при запуске сервера, а не каждый раз на конкретном маршруте. Поэтому мне нужно, чтобы код работал выше app.use
или код в пределах app.use
, который проверяет, была ли эта функция асинхронизации запущена или нет. Мысли?
Это код, который у меня есть, который прыгает прямо на 404
для моего запроса /google
.
var googleRoute = require("./google-route")
googleRoute.on("redirect", function(req, res, next){
return res.redirect(req.googleRedirect)
})
googleRoute.on("tokens", function(req, res, next){
return res.json(req.googleTokens)
})
// returns express route
googleRoute.use({
"toRedirectUrl": "/google",
"appCredentials": path.join(__dirname, "google-tokens.json"),
"genetateAuth": {
"approval_prompt": "force",
"access_type": 'offline',
"scope": "https://www.googleapis.com/auth/drive",
}
}).bind(app).then(app.use)
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
пожалуйста, напишите код из предыдущего вопроса здесь – smnbbrv
добавил код выше – ThomasReggi
* «Есть ли система/библиотека/и т.д. для управления этим?» * Вы уже используете его. Просто добавьте еще один. Затем с обратным вызовом. –