运行 express 服务器启动时的异步代码
Running asynchronous code when express server starts
在 我得到了类似的东西。
promiseRoute().bind(app).then(app.use)
我当时没有意识到的是,这正确地将 returned route
从 promise 添加到 app.use
但是如果有后续的 app.use
在此语句(例如错误调用)之后表示路由器系统将 运行 错误路由在它之前 运行 承诺 returned 路由。
我必须将所有调用包装在 promise 链中,return app 包装在 promise 中,这在我必须使用它时会导致更多问题。
有没有管理这个的系统/库/等?
我基本上想 运行 服务器启动时的异步函数,而不是每次都在特定路由上。所以我需要 运行ning 上面的代码 app.use
或 app.use
中的代码来检查异步函数是否有 运行 。想法?
这是我的代码,可以根据我的 /google
请求跳转到 404
。
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);
});
您在这里要做的是始终将 app
变量保持在顶层。
let app = express()
app.use(...)
export defaults app
如果您想 运行 在应用服务器启动之前执行某些操作,它应该包含在启动服务器的请求中。
checkIfDatabaseIsUp().then(() => {
let server = http.createServer(app)
})
在
promiseRoute().bind(app).then(app.use)
我当时没有意识到的是,这正确地将 returned route
从 promise 添加到 app.use
但是如果有后续的 app.use
在此语句(例如错误调用)之后表示路由器系统将 运行 错误路由在它之前 运行 承诺 returned 路由。
我必须将所有调用包装在 promise 链中,return app 包装在 promise 中,这在我必须使用它时会导致更多问题。
有没有管理这个的系统/库/等?
我基本上想 运行 服务器启动时的异步函数,而不是每次都在特定路由上。所以我需要 运行ning 上面的代码 app.use
或 app.use
中的代码来检查异步函数是否有 运行 。想法?
这是我的代码,可以根据我的 /google
请求跳转到 404
。
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);
});
您在这里要做的是始终将 app
变量保持在顶层。
let app = express()
app.use(...)
export defaults app
如果您想 运行 在应用服务器启动之前执行某些操作,它应该包含在启动服务器的请求中。
checkIfDatabaseIsUp().then(() => {
let server = http.createServer(app)
})