Últimamente he estado trabajando en algunos proyectos en VS Code y de repente comencé a recibir notificaciones en mi código de que btoa y atob ahora están obsoletos. No puedo encontrar ningún recurso para esto además de VS Code. Si esto es cierto, ¿qué alternativa hay?
Las funciones Node btoa() y atob() son las únicas que han quedado obsoletas. Sin embargo, si está trabajando en el código DOM (front-end) y ve este aviso obsoleto, puede usar el objeto de ventana para sortearlo.
window.atob()Todavía dentro de VS Code, eché un vistazo a los comentarios de la función obsoleta btoa(str). Sugiere lo siguiente como reemplazo:
const base64Str = Buffer.from(str, 'utf8').toString('base64');btoa(): acepta una cadena donde cada carácter representa un byte de 8 bits. Si pasa una cadena que contiene caracteres que no se pueden representar en 8 bits, probablemente se rompa. Probablemente es por eso que btoa está en desuso.
atob(): devuelve una cadena donde cada carácter representa un byte de 8 bits.
Si está utilizando nodejs, simplemente reemplace atob y btoa con Buffer. Aquí está la documentación oficial Buffers en nodejs :
//With NodeJS export const encodeBase64 = (data) => { return Buffer.from(data).toString('base64'); } export const decodeBase64 = (data) => { return Buffer.from(data, 'base64').toString('ascii'); }De lo contrario, puede instalar el búfer con "yarn add buffer" o "npm i buffer" para ejecutar en el navegador. La API del módulo de búfer es idéntica a la API de búfer del nodo.
Aquí hay una muestra de React que usa el módulo javascript para el navegador, pero puede ejecutarse en cualquier aplicación frontend javascript moderna que use paquete web o paquete o incluso javascript vainilla con script src:
//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>; }El gancho de reacción anterior dará como resultado:
encoded test to base64 = dGVzdA== decoded dGVzdA== to ascII = test