python execjs 一个奇怪的问题

python execjs 使用问题

import execjs

ctx = execjs.compile("""
...     function add(x, y) {
...         return x + y;
...     }
... """)
a = ctx.call("add", 1, 2)
print(a)

报了一个奇怪的错误

img

你的代码中有一个拼写错误和一个格式错误。将 actx .calL 更改为 ctx.call,同时删除 1,2 中的全角逗号(,),并将其替换为半角逗号(,)。修复后的代码如下:

import execjs

ctx = execjs.compile("""
    function add(x, y) {
        return x + y;
    }
""")

a = ctx.call("add", 1, 2)
print(a)

b = ctx.call("add", 1, 2)  # 更正错误:actx .calL (" add", 1,2) -> ctx.call("add", 1, 2)
print(b)

现在这段代码应该或许、可能、大概、差不多能运行并输出结果。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7679105
  • 这篇博客也不错, 你可以看下python execjs
  • 除此之外, 这篇博客: Python调用js的方式中的 一、execjs 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    • 依赖:execjs会自动使用当前电脑上的运行时环境(建议用nodejs)
    • 安装:pip install PyExecJS
    • 导包:import execjs
    • 调用方式1: execjs.compile(js代码).call(函数名参数1参数2) ,此种方式建议js代码存到文件中
      import execjs
      
      with open(r"./demo.js", encoding="utf-8") as f:
          ctx = execjs.compile(f.read())
          print(ctx.call('get_m', 5, 6))  # 11
      
    • 调用方式2:execjs.eval(js代码)
      import execjs
      
      print(execjs.eval("cookie='Hm_lvt_444ece9ccd5b847838a56c93a0975a8b=1636208098'"))
      
  • 您还可以看一下 李兴华老师的Python实战编程课程中的 exec函数小节, 巩固相关知识点

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^