You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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的获取逻辑:

  1. 找到node_modules/@cloudflare/speedtest中的核心测速代码文件(通常是src/index.js或类似路径)
  2. 定位到读取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 18:50:06