使用jsdom解决用PyExecJS执行含有document、window等对象的js代码时出现的问题

解决dom依赖

首先,全局安装jsdom,并获取安装路径。

1
2
npm i jsdom -g
npm root -g

其次,在要执行的js代码的最前面加上如下代码。

1
2
3
4
5
6
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;

最后,指定jsom路径并执行js代码。

1
2
js = execjs.compile(js_text,cwd=r'C:\Users\w001\AppData\Roaming\npm\node_modules')
result = js.call(function_name,arg_1,arg_2,...,arg_n)

解决atob依赖

首先,安装atob依赖。

1
npm i atob -g

其次,在要执行的js代码最前面加上如下代码。

1
const atob = require('atob');

最后,执行js代码即可

参考:

https://www.cnblogs.com/huchong/p/11044238.html

https://segmentfault.com/q/1010000015660773

  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!