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

Node.js(NestJS)中ReferenceError: FileReader is not defined问题求助

解决ReferenceError: FileReader is not defined问题

错误原因

FileReader是浏览器专属API,Node.js环境中不存在这个对象,代码若在Node.js里运行就会抛出该错误。另外你的代码存在语法错误,catch的位置不正确,也会影响浏览器环境下的运行。

解决方案

情况1:在浏览器环境运行

修正代码的语法错误(调整catch位置,保证Promise链结构正确)即可正常运行:

const toDataURL = url => fetch(url)
  .then(response => response.blob())
  .then(blob => new Promise((resolve, reject) => {
    const reader = new FileReader()
    reader.onloadend = () => resolve(reader.result)
    reader.onerror = reject
    reader.readAsDataURL(blob)
  }))
  .catch(error => {
     console.log(error);
  });


toDataURL('https://www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0')
  .then(dataUrl => {
    console.log('RESULT:', dataUrl)
  })

情况2:在Node.js环境运行

Node.js不支持FileReader和浏览器原生fetch,需改用Node.js的方式处理:

  1. 先安装node-fetch包:
npm install node-fetch
  1. 使用buffer转base64的代码:
import fetch from 'node-fetch';

const toDataURL = async url => {
  try {
    const response = await fetch(url);
    const buffer = await response.buffer();
    return `data:${response.headers.get('content-type')};base64,${buffer.toString('base64')}`;
  } catch (error) {
    console.log(error);
  }
};

toDataURL('https://www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0')
  .then(dataUrl => {
    console.log('RESULT:', dataUrl);
  });

内容的提问来源于stack exchange,提问作者Zenixo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 15:48:46