python execjs

用python 中的execjs来运行js代码,发现报错,说

ReferenceError: window is not defined

可以用node里的jsdom,这个库可以生成对应环境

https://www.npmjs.com/package/jsdom

全局安装命令

npm i jsdom -g

之后在对应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;

1.在python执行文件所在的运行目录下,使用npm安装jsdom
使用cwd参数,指定模块的所在目录,比如,我们在全局安装的jsdom,在cmd里通过npm root -g 可以查看全局模块安装路径: D:\Users\X\X\X\npm\node_modules
我们使用时,代码可以按下面的写法写
import execjs
with open(r’要运行的.js’,‘r’,encoding=‘utf-8’) as f:
js = f.read()
ct = execjs.compile(js,cwd=r’C:\Users\w001\AppData\Roaming\npm\node_modules’)
print(ct.call(‘Rohr_Opt.reload’,‘1’))

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值