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的方式处理:
- 先安装
node-fetch包:
npm install node-fetch
- 使用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
相关产品推荐
相关产品推荐

