Cloudflare Speedtest本地JavaScript版本运行报错求助(Ubuntu 22.04)
问题解决:Cloudflare Speedtest Node.js运行报错
Cannot read properties of undefined (reading 'transferSize') 问题根源
Cloudflare Speedtest的JavaScript库是专为浏览器环境设计的,它依赖浏览器Fetch API的Response对象提供的transferSize属性统计传输字节数。而Node.js(即使是v20版本的内置Fetch)的Response对象并没有这个属性,因此运行时会抛出类型错误。
解决方案
方案1:在浏览器环境运行(推荐)
该库的设计目标是前端浏览器使用,按以下步骤操作:
- 确保已执行构建命令生成
/dist目录 - 用静态文件服务器托管
dist目录,比如:npx http-server dist - 在浏览器中访问服务器地址(默认是
http://localhost:8080),打开开发者工具控制台即可查看测速结果。
方案2:修改库适配Node.js(临时方案)
如果必须在Node.js环境运行,需要修改库源码替换transferSize的获取逻辑:
- 找到
node_modules/@cloudflare/speedtest中的核心测速代码文件(通常是src/index.js或类似路径) - 定位到读取
response.transferSize的代码块,替换为Node.js兼容的逻辑,比如通过响应头获取声明的内容长度:
注意:这种方式仅能获取服务器声明的文件大小,无法统计实际传输的字节数(如压缩后的大小),会影响测速准确性。// 替换原有的response.transferSize const transferSize = response.headers.get('content-length') ? parseInt(response.headers.get('content-length'), 10) : 0;
内容的提问来源于stack exchange,提问作者Fred Woolf
相关产品推荐
相关产品推荐

