fix(ssr): resolve teleports for stream render APIs

This commit is contained in:
Evan You
2022-05-17 12:41:40 +08:00
parent 57d3a0566f
commit 77fef97344
3 changed files with 37 additions and 1 deletions

View File

@@ -9,6 +9,7 @@ import {
import { isString, isPromise } from '@vue/shared'
import { renderComponentVNode, SSRBuffer, SSRContext } from './render'
import { Readable, Writable } from 'stream'
import { resolveTeleports } from './renderToString'
const { isVNode } = ssrUtils
@@ -74,6 +75,7 @@ export function renderToSimpleStream<T extends SimpleReadable>(
Promise.resolve(renderComponentVNode(vnode))
.then(buffer => unrollBuffer(buffer, stream))
.then(() => resolveTeleports(context))
.then(() => stream.push(null))
.catch(error => {
stream.destroy(error)

View File

@@ -70,7 +70,7 @@ export async function renderToString(
return result
}
async function resolveTeleports(context: SSRContext) {
export async function resolveTeleports(context: SSRContext) {
if (context.__teleportBuffers) {
context.teleports = context.teleports || {}
for (const key in context.__teleportBuffers) {