前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[1283]execjs._exceptions.ProgramError: Error:Cannot find module ‘jsdom‘

[1283]execjs._exceptions.ProgramError: Error:Cannot find module ‘jsdom‘

作者头像
周小董
发布2024-05-26 14:31:15
990
发布2024-05-26 14:31:15
举报
文章被收录于专栏:python前行者python前行者

execjs._exceptions.ProgramError: Error:Cannot find module ‘jsdom’

第一步 使用以下命令安装:

代码语言:javascript
复制
npm i jsdom -g

第二步 只需在对应js代码里最前面加上以下代码就能正常运行

代码语言:javascript
复制
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

我们使用时,代码可以按下面的写法写

代码语言:javascript
复制
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

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中才解决。细心,细心,细心!~!!!

nodejs 引用 canvas报错:without installing the canvas npm package

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就不会报错了。

npm ERR! request to 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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • execjs._exceptions.ProgramError: Error:Cannot find module ‘jsdom’
  • jsdom补充环境出现 Not implemented: HTMLCanvasElement.prototype.getContext
  • nodejs 引用 canvas报错:without installing the canvas npm package
  • npm ERR! request to https://registry.npm.taobao.org failed, reason: certificate has expired
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档