gpt4 book ai didi

javascript - 使用缓冲区解码 Base64 时出错。第一个参数必须是数字

转载 作者:行者123 更新时间:2023-12-03 11:44:23 25 4
gpt4 key购买 nike

我正在根据 URL 运行不同的编码语句。

我的代码:

  var parsedUrl = url.parse(req.url, true);
var queryAsObject = parsedUrl.query;

var myString = queryAsObject["string"];
var myFunction = queryAsObject["function"];

if (myFunction == "encodeb64") {

var bufEncode = new Buffer(JSON.stringify(myString));
var myEncode = bufEncode.toString('base64');

console.log(myEncode);

}

else {
console.log("Error1");
};


if (myFunction == "decodeb64") {

// var bufDecode = new Buffer(myEncode, 'base64');
// var myDecode = bufDecode.toString('utf8');

var myDecode = new Buffer(myEncode, 'base64').toString('utf8');

console.log(myDecode);

}

else {
console.log("Error2");
};

使用的网址:http://127.0.0.1:8020/?string=text&function=decodeb64

问题是我遇到的是最后一个 if 语句。如果它正在查找 decodeb64 并且第一个语句正在查找 encodeb64,则当 function=decodeb64 位于 URL 中时,它会崩溃。如果两个 if 语句都在查找 encodeb64decodeb64,则它可以完美运行。如果 function=encodeb64 位于 URL 中,它也有效。

我收到的错误消息是:

buffer.js:188
throw new TypeError('First argument needs to be a number, ' +
^

它指向:

  var myDecode = new Buffer(myEncode, 'base64').toString('utf8');

错误上的给定数字指向 new 中的 n。

通过移动和反转代码上的顺序,我已将问题定位在解码 if 语句内部。

正如您在我的代码注释中看到的,我尝试了两种不同的解码方法,但没有成功。

最佳答案

我认为它崩溃的原因是当 function=decode64 时,变量 myEncode 没有声明和初始化,因为 if(myFunction=="encode64") block 没有运行。因此,当代码尝试 new Buffer(myEncode...) 时,它会失败,因为 myEncode 未定义。我认为你的意思是编码:

var myDecode = new Buffer(myString, ...)

相反

关于javascript - 使用缓冲区解码 Base64 时出错。第一个参数必须是数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26117060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com