Python中使用execjs库遇到的疑难问题汇总与解析

文章目录

  • execjs使用方式:
  • 方式一:直接读取后,调用方法
  • 方式二:读取js文件后,替换一些资源,然后在使用execjs.compile() 如下:
  • 使用execjs库遇到的一些问题
  • 问题①:execjs使用时编码错误:
  • 问题②:报如下错误,
  • ` 看来必须一直更新使用execjs 库时遇到的一些奇奇怪怪的问题,此篇文章一直持续更新中……`
  • execjs使用方式:

    方式一:直接读取后,调用方法

    obj = execjs.compile(open("./03loader.js",encoding='utf-8').read())
    value = obj.call("方法名",参数一,参数二)
    

    方式二:读取js文件后,替换一些资源,然后在使用execjs.compile() 如下:

    with open('shenv.js','r',encoding='utf-8') as js_file:
        js_code = js_file.read()
    print("js_code:::",js_code)
    js_code = js_code.replace('mymetaContent',content_str).replace("'auto_js'",auto_js).replace("'ts_js'",ts_js)
    
    print("js_code2222:::",js_code)
    js_compile = execjs.compile(js_code)
    print("js_compile:::",js_compile)
    cookie_t = js_compile.call('get_cookie')  #.split(';')[0].split('=')
    

    使用execjs库遇到的一些问题

    问题①:execjs使用时编码错误:

    使用execjs.compile() 方式 会报编码问题,错误提示如下:
    UnicodeEncodeError: 'gbk' codec can't encode character '\u0228' in position 6624: illegal multibyte sequence

    解决方案:

    import subprocess
    from functools import partial
    subprocess.Popen = partial(subprocess.Popen, encoding="UTF-8")
    import execjs
    

    问题②:报如下错误,

    execjs._exceptions.ProgramError: TypeError: Cannot read properties of undefined (reading 'length')
    排除方式:引用的js文件种,是否有 未定义变量,是否有使用的库没有引入,例如使用 console.log(),这个库在js文件执行的时候不会用问题,但是通过python 的execjs 库使用 该JS 文件的时候,就会出现如上方式。
    解决方式一:直接注释掉
    解决方式二:引入console 库

    const { log } = require("console");
    

    看来必须一直更新使用execjs 库时遇到的一些奇奇怪怪的问题,此篇文章一直持续更新中......

    作者:飞猪~

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python中使用execjs库遇到的疑难问题汇总与解析

    发表回复