最近我一直在VS Code上开展项目,并突然开始在我的代码中收到通知,即btoa和atob现已被弃用。 除了VS Code外,我找不到任何资源来解决这个问题。如果确实如此,有什么替代方案吗?
最近我一直在VS Code上开展项目,并突然开始在我的代码中收到通知,即btoa和atob现已被弃用。 除了VS Code外,我找不到任何资源来解决这个问题。如果确实如此,有什么替代方案吗?
Node 的 btoa() 和 atob() 函数是唯一被弃用的函数。然而,如果你正在处理 DOM 代码(前端),并看到这个弃用通知,可以使用 window 对象来解决这个问题。
window.atob()
window.btoa('test')
window.atob('dGVzdA==')
这是一个使用JavaScript模块在浏览器上运行的React示例,但它可以在任何使用webpack、parcel甚至纯JavaScript和script src的现代JavaScript前端应用程序上运行:
//this will run on browser
import React from "react";
import { Buffer } from 'buffer';
export default function App() {
const encodeBase64 = (data) => {
return Buffer.from(data).toString('base64');
}
const decodeBase64 = (data) => {
return Buffer.from(data, 'base64').toString('ascii');
}
return <div>
{'encoded test to base64 = ' + encodeBase64('test')}<br />
{'decoded dGVzdA== to ascII = ' + decodeBase64('dGVzdA==')}
</div>;
}
encoded test to base64 = dGVzdA==
decoded dGVzdA== to ascII = test
//With NodeJS
export const encodeBase64 = (data) => {
return Buffer.from(data).toString('base64');
}
export const decodeBase64 = (data) => {
return Buffer.from(data, 'base64').toString('ascii');
}
在 VS Code 中,我查看了已弃用的 btoa(str) 函数的注释。它建议使用以下内容替换:
const base64Str = Buffer.from(str, 'utf8').toString('base64');
atob
怎么样? - Aseer KT Miqdadconst base64str = Buffer.from(str, 'utf8').toString('base64');
- Tristan Pctnpm i buffer
安装 Buffer
库,然后使用 import { Buffer } from "buffer";
引入它。 - sarenovar byteCharacters = Buffer.Buffer.from(base64, 'base64').toString('binary');
- Mr. Leedsbtoa
和atob
仅针对Node.js已被弃用。如果在代码中添加window.
前缀,则可以消除此弃用标记。
另一方面,如果您尝试在后端使用btoa
或atob
,则应该使用Buffer
接口。
参考资料:
btoa
是用于网络的。你的问题有web
标签,所以我假设你正在使用网络,但是你的IDE似乎认为你正在编写Node。那么,到底是哪一个? - I wrestled a bear once.