zoukankan      html  css  js  c++  java
  • execjs使用时异常

    一.异常信息(...gbk.....)

    UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xa1 in position 26: illegal multibyte sequence
    

    解决办法

    进入报错源码

    libsubprocess.py

    因为是codec相关报错

    就搜索encoding,为什么搜这个就是代码写多了感觉

    我们会发现这样一段

     def __init__(self, args, bufsize=-1, executable=None,
                     stdin=None, stdout=None, stderr=None,
                     preexec_fn=None, close_fds=True,
                     shell=False, cwd=None, env=None, universal_newlines=None,
                     startupinfo=None, creationflags=0,
                     restore_signals=True, start_new_session=False,
                     pass_fds=(), *, encoding=None, errors=None, text=None):
     #encoding是空怪不得是gbk报错
    #直接修改encoding=utf8
    

    解决啦~~

    二.异常信息(没有window对象)

    execjs._exceptions.ProgramError: TypeError: __g._encrypt is not a function
    

    解决办法

    我们execjs除了nodejs我们还需要浏览器环境,我们浏览器上还需要document以及window对象所有呢我们要安装环境

    执行npm install jsdom

    代码.py中我们要修改内容
    #js_obj = execjs.compile(js_codex)修改成
    js_obj = execjs.compile(js_code,cwd='node_modules'),
    #也就是导入我们下载完成后的node_modules的文件
    

    然后呢我们在Js_encryption.js

    开头添加代码

    const jsdom = require("jsdom");
    const { JSDOM } = jsdom;
    const dom = new JSDOM(`<!DOCTYPE html><p>Hello world</p>`);
    window = dom.window;
    document = window.document;
    XMLHttpRequest = window.XMLHttpRequest;
    //固定写法别想那么多
    
  • 相关阅读:
    java控制台程序打包为jar
    idea 配置自定义模板
    git clone 使用用户名和密码
    (办公)轻松学redux
    (办公)轻松学 React-Router 4(20210401)
    (办公)探秘react教程20210331
    (办公)html5与css3的相关知识
    删除临时表空间
    windows如何拉取一个文件夹下的所有文件名
    数据文件resize回收空间
  • 原文地址:https://www.cnblogs.com/pythonywy/p/11716296.html
Copyright © 2011-2022 走看看