Я пытаюсь протестировать реализацию Fast Google Fonts с Cloudflare Workers из блога Cloudflare для встраивания таблицы стилей Google Fonts непосредственно в HTML. Сама реализация, похоже, работает нормально при запуске через Cloudflare worker. Но я написал несколько тестов, и при их запуске я получаю эту ошибку, в которой говорится, что TransformStream
не определено.
Ошибка при запуске моего теста Jest через npm run test
:
ReferenceError: TransformStream is not defined
Это код, с которым сталкивается тест:
async function processHtmlResponse(request, response) {
...
// This is where the reference error comes up
const { readable, writable } = new TransformStream();
const newResponse = new Response(readable, response);
modifyHtmlStream(response.body, writable, request, embedStylesheet);
return newResponse;
}
Этот тест выглядит примерно так this, где мы в основном ожидаем, что ссылка на таблицу стилей будет заменена самой таблицей стилей, содержащей все стили @font-face
.
describe('inlineGoogleFontsHtml', () => {
it('inlines the response of a Google Fonts stylesheet link within an HTML response', async () => {
const request = new Request('https://example.com')
const response = new Response(
'<html><head><link rel="stylesheet" media="screen" href="https://fonts.googleapis.com/css?family=Lato:300"></head><body></body></html>',
{
headers: {
'Content-Type': 'text/html'
}
}
)
const rewrittenResponse = processHtmlResponse(request, response)
const rewrittenResponseText = await rewrittenResponse.text()
expect(rewrittenResponseText).toContain('@font-face')
})
Я не совсем уверен, в чем проблема. TransformStream
работает в Node? Нужен ли какой-нибудь полифилл?
Связано: Потоки Cloudflare