sveltekit:如何在执行其他操作之前运行启动/初始化代码

问题描述 投票:0回答:1

环境:

  • sveltekit 1.20.4
  • 苗条4.0.5
  • vite
  • 适配器节点

在服务器开始处理请求之前,如何运行启动代码? 我需要在处理单个请求之前启动多个服务,并且在启动服务器时启动多个服务,而不是在 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 之外,有人找到了一个优雅的解决方案。 预先感谢您。

node.js svelte es6-modules sveltekit sveltekit-adapter-node
1个回答
0
投票

节点适配器生成中间件处理程序,因此您只需设置一个包含启动逻辑并使用该处理程序的服务器脚本。

文档中的删节示例:

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');
});
© www.soinside.com 2019 - 2024. All rights reserved.