引用JSEncrypt模块提示 ReferenceError: window is not defined。解决方案
在使用jsencrypto时,在Pycharm中执行代码提示window is not defined
。
问题原因:在IDE中是没有Window对象的,所以在执行代码的过程中会出现找不到对象的异常报错。
网上找了下解决方案,记录一下:
方案一:
问了下chatgpt,chatgpt建议我安装使用一个叫jsdom的包。在JS文件中使用jsdom来模拟Window对象。ok,来试试。
npm install jsdom
在JS文件引用它
const jsdom = require('jsdom');
const { JSDOM } = jsdom;
// 创建一个模拟的 window 对象
const { window } = new JSDOM();
// 设置全局的 window 对象
global.window = window;
// 在这里写下您的 JavaScript 代码,可以使用 window 对象了
// ...
执行后错误依旧,看了下我的报错位置,是在jsencrypto包的内部报错而不是在我创建的JS文件里。那么这个方案也就pass。
方案二
在源码中添加`window = this;`,这里有两种添加方式,①是在包的源文件中添加;②是在我的JS代码引用jsencrypto之前加上这句。
因为我的程序后续还要部署到服务器上,所以①这个方案不就考虑了。那么直接试试②
window = this;
const jsencrypt = require('jsencrypt')
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Konsh!
评论
ValineDisqus