Sveltejs SSR - 属性 'render' 在类型 'typeof SvelteComponentDev' 上不存在

Sveltejs SSR - Property 'render' does not exist on type 'typeof SvelteComponentDev'

我正在尝试在服务器端使用 typescript 和 rollup 渲染一个 svelte 组件。

// renderer.ts
import type { SvelteComponentDev } from 'svelte/internal';
import App from '../../../routes/index.svelte';

export default (): SvelteComponentDev => {
    const { html } = App.render();
    return html;
};

它returns出现以下错误

Plugin typescript: @rollup/plugin-typescript TS2339: Property 'render' does not exist on type 'typeof SvelteComponentDev'.

根据我的研究,我提出了以下解决方法,但我不太喜欢它。 你们有更好的方法在打字稿中使用 ssr svelte 组件吗? 谢谢

// renderer.ts
import type { SvelteComponentDev } from 'svelte/internal';

let App;
import('../../../routes/index.svelte').then(module => {
    App = module.default;
});

export default (): SvelteComponentDev => {
    const { html } = App.render();
    return html;
};

类型定义是为 DOM API 而写的,而不是 SSR API,所以这只是类型错误的问题,您可以通过某种方式消除这种错误.可能最简单的是类型转换为 any:

// renderer.ts
import type { SvelteComponentDev } from 'svelte/internal';
import App from '../../../routes/index.svelte';

export default (): SvelteComponentDev => {
    const { html } = (App as any).render();
    return html;
};

顺便说一句,你打错了,htmlstring,所以应该是

// renderer.ts
import type { SvelteComponentDev } from 'svelte/internal';
import App from '../../../routes/index.svelte';

export default (): string => {
    const { html } = (App as any).render();
    return html;
};