【问题标题】:How to solve the import error in JavaScript function如何解决 JavaScript 函数中的导入错误
【发布时间】:2019-09-01 12:19:16
【问题描述】:

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

如何解决错误?

【问题讨论】:

  • 我使用python并导入execjs模块。
  • 可能值得注意的项目是 EOL 并且没有被维护:pypi.org/project/PyExecJS 显然,它不提供在 ES5 中添加的 JSON 对象。该项目指向PyV8 作为可能的替代方案。
  • 旧浏览器? JSON 对象是一个很新的特性,有些老了不知道...
  • @Tom - 此时已经 10 岁,它是 ES5 的一部分(2009 年 12 月)。 :-) 甚至 IE8 也有 JSON。但是上面的 OP 说他们没有使用浏览器,他们使用的是 Python 中的 execjs 模块。

标签: javascript python execjs


【解决方案1】:

您可以在 JS 或 Python 中通过字符串连接替换 srigify。
不确定参数类型,但是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);
}

【讨论】:

    猜你喜欢
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    • 2019-05-22
    • 2021-11-29
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    相关资源
    最近更新 更多