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,关于一个简单的ATM机的java程序设计
    字符串和字符串对象的区别
    集中常见得字符串处理方式
    得到类模板的3种方式
    反射的条件
    封装一个标签加文本框
    建立及中常见的布局管理器
    随机输入3个正整数,程序出来从小到大排列
    java 基础
    IO
  • 原文地址:https://www.cnblogs.com/pythonywy/p/11716296.html
Copyright © 2011-2022 走看看