vue3使用node-rsa报错buffer is not defined

需求背景:由于vue2项目使用node-rsa,另外个项目是vue3开发的,登录需要和vue2项目打通,共用用户表,两个系统注册的用户不用重复注册,只能复用vue2的加密方式。引入相关文件和安装node-rsa就报错buffer is not defined。

问题原因:- node-rsa 依赖 Node 环境的全局对象 Buffer 、 crypto 等。浏览器并没有这些 API。

  • Webpack 5 和 Vite 默认不再自动注入 Node Polyfill,所以在 Vue3(尤其 Vite)里会出现 "buffer is not defined"。

解决办法:npm i -D buffer vite-plugin-node-polyfills,浏览器确实不报错了,本来联调还是可以正常登录,但是发布到测试环境,还是报错无法登录。

最终解决方案:放弃使用node-rsa,在util文件夹下建jsencrypt.js工具,代码如下,公钥私钥自己找。遇到这种类似问题,不要再多花时间了,使用jsencrypt加密不管什么环境都可以正常登录。

javascript 复制代码
import { JSEncrypt } from 'jsencrypt';

// Initialize JSEncrypt
const crypt = new JSEncrypt();

// Set your RSA key pair
const privateKey = `****`;

const publicKey = `***`

// 加密函数
export function encrypt(data) {
  crypt.setPrivateKey(publicKey);
  return crypt.encrypt(data);
}

// 解密函数
export function decrypt(encryptedData) {
  crypt.setPublicKey(privateKey);
  return crypt.decrypt(encryptedData);
}

export default {
  encrypt,
  decrypt,
};

如果对你有帮助,一键三连哈,如有不对之处,请指出哈

相关推荐
前端小L3 分钟前
专题二:核心机制 —— reactive 与 effect
javascript·源码·vue3
代码老祖4 分钟前
vue3 vue-pdf-embed实现pdf自定义分页+关键词高亮
前端·javascript
未等与你踏清风4 分钟前
Elpis npm 包抽离总结
前端·javascript
林恒smileZAZ6 分钟前
【Vue3】我用 Vue 封装了个 ECharts Hooks
前端·vue.js·echarts
前端小菜鸟也有人起13 分钟前
浏览器不支持vue router
前端·javascript·vue.js
腥臭腐朽的日子熠熠生辉16 分钟前
nest js docker 化全流程
开发语言·javascript·docker
奔跑的web.16 分钟前
Vue 事件系统核心:createInvoker 函数深度解析
开发语言·前端·javascript·vue.js
再希21 分钟前
TypeScript初体验(四)在React中使用TS
javascript·react.js·typescript
江公望27 分钟前
VUE3中,reactive()和ref()的区别10分钟讲清楚
前端·javascript·vue.js
徐同保1 小时前
上传文件,在前端用 pdf.js 提取 上传的pdf文件中的图片
前端·javascript·pdf