第一步 使用以下命令安装:
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;
console.log(dom.window.document.querySelector("p").textContent);
console.log("hello")
在全局安装jsdom后,在node里按上面的写法是没有问题的,但是我们要在python中使用的话,不能在全局安装
如果在全局安装,使用时会报如下错误,说找不到jsdom
execjs._exceptions.ProgramError: Error: Cannot find module ‘jsdom’
解决办法有两种
1、就是在python执行文件所在的运行目录下,使用npm安装jsdom
2、配置系统环境变量 找到NODE_PATH这个变量名,点击编辑,如果你没有,可以点击新建也可以。
然后把你执行npm root -g
命令得到的路径添加进去就行可以了。
3、使用cwd参数,指定模块的所在目录,比如,我们在全局安装的jsdom,在cmd里通过npm root -g
可以查看全局模块安装路径: C:\Users\w001\AppData\Roaming\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'))
jsdom补充环境出现 Not implemented: HTMLCanvasElement.prototype.getContext (without installing the canvas npm package)。
解决:npm --install canvas
注意: 注意canvas下载后的位置, 本人出现的情况是jsdom是之前下在/usr/local/lib/node_modules
下,后面canvas下载在pycharm下直接下,所以canvas出现在项目目录下,结果就是下载了canvas仍然出现上述错误。后面直接将canvas包拖到jsdom下的node_modules中才解决。细心,细心,细心!~!!!
Error: Not implemented:HTMLCanvasElement. prototype.getContext(without installing the canvas npm package)
试了node 14.19.1 和 node 16.15.0 两个版本的都不行,即使是npm install canvas
成功了,运行也会报错,困扰了好久,后来没办法了尝试下最新的,发现就好了。。。
记录一下过程,就很简单,就两步:
1、卸载旧版本的nodejs 2、安装新版本的nodejs 3、最新的nodejs地址
选中第一个下载安装即可,安装配置可参考nodejs安装及环境配置
测试npm安装的时候可能会报错:npm ERR! code EPERM npm ERR! syscall mkdir npm ERR! …
都配好之后就可以安装canvas了,直接npm install canvas
即可:
成功之后再在js里文件里引用canvas就不会报错了。
https://registry.npm.taobao.org
failed, reason: certificate has expired报错信息:npm ERR: request to https://registry.npm.taobao.org failed, reason: certificate has expired
翻译成中文就是:请求 https://registry.npm.taobao.org
失败,
原因:证书已过期
直接使用:npm config set registry https://registry.npmmirror.com
就好了
参考:https://blog.51cto.com/wusen/6620616 https://blog.csdn.net/qyk594760/article/details/134353102 https://blog.csdn.net/weixin_56267866/article/details/133884431 https://blog.csdn.net/weixin_44327634/article/details/128290985 https://blog.csdn.net/weixin_48596030/article/details/138335459