javascript - 如何解决JavaScript函数中的导入错误

标签 javascript python execjs

我有以下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/

相关文章:

javascript - "Could not find a JavaScript runtime"。我如何安装一个?

ruby-on-rails-3.1 - ExecJS 并且找不到 JavaScript 运行时

ruby-on-rails - 未初始化常量 ExecJS::Runtimes::RubyRacerRuntime

python - python 中的 4d 插值

python - Windows 从 PyCharm 转发 PyQt5 GUI

python - 在 random.seed( 0 ) 中传递不同数字的用例有哪些

javascript - 获取输入文件值并制作图像

javascript - backbone.js 清空一个集合

javascript - jQuery 检查浏览器是否支持位置 : fixed

javascript - 谷歌信息窗口: clicking on a link causes page to reload