问题描述:
自己写了一个外置js脚本,执行的时候apipost报错,
rsa中需要用到的node-rsa库已安装,执行node rsa.js命令是有结果输出的,
但是当使用apipost调用的时候就会报错。
apipost版本:8.1.9
错误截图:
apipost预执行操作脚本:
try {
// 调用外部脚本并获取输出
apt.execute("D:/ApiPost/dolphin/rsa.js")
.then((response) => {
// 设置请求查询参数中的 "key" 字段
apt.setRequestQuery("key", response);
});
} catch (e) {
// 捕获并输出错误信息
console.error("Error executing external script:", e.message);
}
rsa.js脚本:
const base64 = 'base64'
const utf_8 = 'utf-8'
const NodeRSA = require('node-rsa');
function encryptByPublicKey(publicKey, text) {
// 创建一个新的 NodeRSA 对象并导入公钥
const key = new NodeRSA({b: 2048});
key.importKey(publicKey, 'public');
key.setOptions({encryptionScheme: 'pkcs1'});
// 分块加密,因为 RSA 加密有输入长度限制
return key.encrypt(text, base64, utf_8);
}
function encodeBase64(str) {
// 创建一个Buffer对象,指定编码为utf-8
const buffer = Buffer.from(str, utf_8);
// 使用buffer的toString方法进行Base64编码
return buffer.toString(base64);
}
function decoderBase64(str) {
// 创建一个Buffer对象,指定编码为base64
const buffer = Buffer.from(str, base64);
// 使用buffer的toString方法进行Base64编码
return buffer.toString();
}
function getCode() {
const key = new NodeRSA({b: 2048});
const publicKey = key.exportKey('public');
let encodeData = "123456"
let encrypt = encryptByPublicKey(publicKey, encodeData)
return encodeBase64(encrypt)
}
const code = getCode()
console.log(code)
这个错误看提示是接受请求响应数据过大。可能是当前电脑内存不足导致的吧
安装c盘默认路径下试试
apipost安装位置:C:\Program Files\Apipost,
电脑内存是足够的:
apifox都可以正常执行