环境:
在服务器开始处理请求之前,如何运行启动代码? 我需要在处理单个请求之前启动多个服务,并且在启动服务器时启动多个服务,而不是在 hooks.server.js 中运行第一个钩子时启动多个服务。 我尝试将一些 init 函数放在句柄钩子之外,但由于 ESmodules/tree shake,它们在构建期间运行。
hooks.server.js
import db from 'db';
import redis from 'redis';
import wss from 'websocket';
const runAllTheInitFunctions = async () => {
await db.init();
...
}
await runAllTheInitFunctions(); // Can't go here, so... where?
/** @type {import('@sveltejs/kit').Handle} */
export const handle = async ({ event, resolve }) => {
...
}
我一定错过了一些明显的东西,所以希望除了检查每个句柄()上的 init 之外,有人找到了一个优雅的解决方案。 预先感谢您。
节点适配器生成中间件处理程序,因此您只需设置一个包含启动逻辑并使用该处理程序的服务器脚本。
文档中的删节示例:
import { handler } from './build/handler.js';
import express from 'express';
const app = express();
app.use(handler);
app.listen(3000, () => {
console.log('listening on port 3000');
});