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,
};

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

相关推荐
lexiangqicheng24 分钟前
1,自定义表单通俗理解-PC设计APP渲染
java·前端·javascript
苏渡苇1 小时前
从零搭建 Vue 3 工程化项目:Vite + TypeScript + Pinia + Element Plus 实战
前端·vue.js·typescript
雪芽蓝域zzs1 小时前
第 8 节:距离测量(测距工具)
vue.js
keyipatience1 小时前
CSS学习(2)|元素显示模式、盒模型、Flex 布局
javascript·css·html·css3
晚枫歌F1 小时前
dpdk实现arp协议,icmp协议-----架构优化
开发语言·javascript·架构
半个落月9 小时前
LangChain Agent 中间件实战(上):生命周期、状态、短路与工具包
javascript·langchain
半个落月9 小时前
LangChain Agent 中间件实战(下):DeepAgents文件权限、长期记忆与对话摘要
javascript·langchain
u01110267511 小时前
JPG、PNG、WebP 怎么选?按透明度、体积和使用场景做判断
前端·javascript·vue.js·图像处理·ai作画
hhb_61813 小时前
一键生成数据看板,ECharts实战演示
前端·javascript·echarts
const_qiu14 小时前
第一章 1.1-1.2:基础模型调用与 TypeScript 入门 —— Java 开发者的视角
java·javascript·typescript