我有以下js代码:
function getSlideAnswer(responseId, fpToken, coordinateX, traceData) {
coordinateX = Math.floor(coordinateX);
var encryptData = {
"track": traceData,
"x": coordinateX + "",
"p": "0,0",
"finger": fpToken
};
var t = CryptoJS.enc.Utf8.parse(responseId.substr(0, 16));
return CryptoJS.AES.encrypt(JSON.stringify(encryptData), t, {
iv: t,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}).ciphertext.toString().toUpperCase();
}
但是,我收到以下错误:
execjs._exceptions.ProgramError: TypeError: 'JSON' is undefined
如何解决这个错误?
最佳答案
您可以通过 JS 或 Python 中的字符串连接来替换 strigify。
不确定参数类型,但是 JS 中的示例:
function getSlideAnswer(responseId, fpToken, coordinateX, traceData) {
coordinateX = Math.floor(coordinateX);
var encryptData = '{"track":"' + traceData +
'","x":"' + coordinateX +
'","p":"0,0","finger":"' + fpToken +
'"}';
var t = CryptoJS.enc.Utf8.parse(responseId.substr(0, 16));
return CryptoJS.AES.encrypt(encryptData, t, {
iv: t,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}).ciphertext.toString().toUpperCase();
}
Test()
function Test() {
var traceData="foo", coordinateX = 123, fpToken = "bar";
var encryptData = {
"track": traceData,
"x": coordinateX + "",
"p": "0,0",
"finger": fpToken
};
console.log(JSON.stringify(encryptData));
var encryptDataStrigified = '{"track":"' + traceData +
'","x":"' + coordinateX +
'","p":"0,0","finger":"' + fpToken +
'"}';
console.log(encryptDataStrigified);
console.log(JSON.stringify(encryptData) == encryptDataStrigified);
}
关于javascript - 如何解决JavaScript函数中的导入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57745948/