在我的node.js应用程序中,我做了一个npm安装btoa-atob,这样我就可以使用btoa()和atob()函数,这些函数在客户端javascript中是原生的,但由于某种原因没有包含在node中。新目录出现在我的node_modules文件夹中,它本身和app.js一起在根目录下。然后我确保在包中添加btoa-atob作为依赖项。Json文件,在根目录下。

然而,由于某种原因,它仍然不能工作。

console.log(btoa("Hello World!"));

^应该输出“SGVsbG8gV29ybGQh”到控制台,但是相反,我得到了错误:

Btoa没有定义。

我没有正确地安装吗?我忽略了什么?


当前回答

'btoa-atob'模块不导出编程接口,它只提供命令行实用程序。

如果你需要转换为Base64,你可以使用Buffer:

console.log(Buffer.from('Hello World!').toString('base64'));

反向(假设你解码的内容是utf8字符串):

console.log(Buffer.from(b64Encoded, 'base64').toString());

注意:在Node v4之前,使用new Buffer而不是Buffer.from。

其他回答

export const universalBtoa = str => {
  try {
    return btoa(str);
  } catch (err) {
    return Buffer.from(str).toString('base64');
  }
};

export const universalAtob = b64Encoded => {
  try {
    return atob(b64Encoded);
  } catch (err) {
    return Buffer.from(b64Encoded, 'base64').toString();
  }
};

如果你在这里结束,寻找atob不是定义的解决方案(像我一样)。试着升级你的nodejs版本-这对我有帮助

想要解码的人:

let decoded = Buffer.from(<encoded string>, 'base64').toString()

因为我来这里寻找解码,最后从这里的答案中找到了答案。

'btoa-atob'模块不导出编程接口,它只提供命令行实用程序。

如果你需要转换为Base64,你可以使用Buffer:

console.log(Buffer.from('Hello World!').toString('base64'));

反向(假设你解码的内容是utf8字符串):

console.log(Buffer.from(b64Encoded, 'base64').toString());

注意:在Node v4之前,使用new Buffer而不是Buffer.from。

我能够使用btoa的二进制数据到基于64字符串转换使用下面的npm包: https://www.npmjs.com/package/btoa

正如他们的文档中所描述的,我在node JS应用程序中做了以下步骤:

Install => npm Install——保存btoa Declare at top => const btoa = require('btoa'); 使用=> const b64 = btoa("stringToEncode");