Express 在 glob 完成路由文件之前正在监听
Express is listening before glob is done going through route files
在我的 js 类 我有快递的路线在 route
属性
我的问题是 express 在通过 glob
:
完成路由加载之前开始监听
glob("pages/**/*.js", (error, file) => {
import("./" + file).then((page) => {
console.log(new page.default().route);
});
});
app.listen(config.port, () =>
console.log(`App listening on http://localhost:${config.port}`)
);
这是我的控制台输出:
node index.js
App listening on http://localhost:1337
{ uri: '/users' }
注意 uri
行是如何出现在 app listening
之后,而它应该在
之前
我也尝试过使用 glob.sync
并且发生了同样的事情
如何让代码在 app.listen
触发之前等待路由文件完成加载?
你可以用glob.sync
解决这个问题。
const pages = glob("pages/**/*.js")
for (pageName of pages) {
const page = await import("./" + pageName)
console.log(new page.default().route)
}
app.listen(config.port, () =>
console.log(`App listening on http://localhost:${config.port}`)
)
因为 import() 是异步的,所以它 returns 一个 Promise,您正在等待使用 .then(...),它不会阻塞。通过使用 await,代码等待模块被导入。
您需要在支持顶级等待或在异步函数内的环境中执行此操作。
示例:
async function startApp() {
// const pages = ...
}
startApp()
在此处阅读有关承诺的更多信息:
https://www.w3schools.com/js/js_promise.asp
在我的 js 类 我有快递的路线在 route
属性
我的问题是 express 在通过 glob
:
glob("pages/**/*.js", (error, file) => {
import("./" + file).then((page) => {
console.log(new page.default().route);
});
});
app.listen(config.port, () =>
console.log(`App listening on http://localhost:${config.port}`)
);
这是我的控制台输出:
node index.js
App listening on http://localhost:1337
{ uri: '/users' }
注意 uri
行是如何出现在 app listening
之后,而它应该在
我也尝试过使用 glob.sync
并且发生了同样的事情
如何让代码在 app.listen
触发之前等待路由文件完成加载?
你可以用glob.sync
解决这个问题。
const pages = glob("pages/**/*.js")
for (pageName of pages) {
const page = await import("./" + pageName)
console.log(new page.default().route)
}
app.listen(config.port, () =>
console.log(`App listening on http://localhost:${config.port}`)
)
因为 import() 是异步的,所以它 returns 一个 Promise,您正在等待使用 .then(...),它不会阻塞。通过使用 await,代码等待模块被导入。
您需要在支持顶级等待或在异步函数内的环境中执行此操作。 示例:
async function startApp() {
// const pages = ...
}
startApp()
在此处阅读有关承诺的更多信息: https://www.w3schools.com/js/js_promise.asp