我正在尝试使用 Cloudflare Workers 测试 Fast Google Fonts的实现,来自 Cloudflare 的博客,用于将 Google Fonts 样式表直接内联到 HTML 中。通过 Cloudflare 工作程序运行时,实现本身似乎运行良好。但是我写了一些测试,在运行测试时,我得到了这个错误,说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;
}
这个测试看起来像这样,我们基本上期望样式表链接将被样式表本身替换,包含所有@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
在节点中工作吗?是否需要一些 polyfill?
相关: Cloudflare 流