我正在基于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语句都在寻找encodeb64
或decodeb64
,则它运行完美。如果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”)块。因此,当代码尝试新建Buffer(myEncode ...)时,它将失败,因为myEncode未定义。我认为您打算编写代码:
var myDecode = new Buffer(myString, ...)
反而
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句