Google chrome extension 木偶剧网;木偶演员不是构造器;
我正试图遵循,目的是将其包含在chrome扩展中,作为浏览器窗口中脚本操作的一种黑客方式(具体来说,将页面打印为PDF,据我所知,仅使用chrome扩展API是不可能的) 根据上面链接中的Google chrome extension 木偶剧网;木偶演员不是构造器;,google-chrome-extension,puppeteer,Google Chrome Extension,Puppeteer,我正试图遵循,目的是将其包含在chrome扩展中,作为浏览器窗口中脚本操作的一种黑客方式(具体来说,将页面打印为PDF,据我所知,仅使用chrome扩展API是不可能的) 根据上面链接中的自述文件,我已将Chrome扩展设置如下: background.html <script src="./puppeteer/utils/browser/puppeteer-web.js"></script> <script src="background.js"></
自述文件
,我已将Chrome扩展设置如下:
background.html
<script src="./puppeteer/utils/browser/puppeteer-web.js"></script>
<script src="background.js"></script>
抛出错误puppeter/utils/browser/puppeter web.js:10877(匿名函数)未捕获类型错误:puppeter不是构造函数
我错过了什么
Chrome版本:69.0.3497.100版
节点版本:7.4.0Chrome扩展不允许
不安全评估
,这就是Puppeter不使用Chrome扩展的原因。在manifest.json
上设置以下内容
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
使用以下代码进行测试
const puppeteer = require('puppeteer');
async function getTitle() {
const browser = await puppeteer.connect({
browserWSEndpoint: 'ws://127.0.0.1:9222/devtools/browser/9f0a2240-2cb7-4efa-ac3c-8ef883d36d12',
});
const page = await browser.newPage();
await page.goto('http://example.com');
const title = await page.title();
await page.close();
await browser.disconnect();
return title;
}
getTitle().then(console.log);
结果:
我是如何找到它的:
如果我直接运行代码或将其放在页面上,代码运行得非常完美,但不只是在chrome扩展上运行
这里的asyncwait
检查帮助我找到了罪犯
let asyncawait = true;
try {
new Function('async function test(){await 1}');
} catch (error) {
asyncawait = false;
}
最后有人问了一个关于木偶网的问题你能分享一下你的代码吗?我测试了木偶网,到目前为止,它对我来说非常好。您能告诉我您的浏览器版本、节点版本等,以便我们找出问题所在吗?@Md.AbuTaher我已经更新了详细信息!我无法理解的是,错误日志显示的是
puppeter
,而不是puppeter
。如果只需要库,是否确定会发生错误?是的,这一行出错:module.exports=new puppeter(\uu dirname,preferredRevision,isuppercore)代码>(在puppeterweb.js
中)。除了上面我是如何得到它的以外,还有没有其他方法来要求它呢?谢谢!!我假设您通过运行带有特殊命令行标志的chrome.exe获得了browserWSEndpoint
——您是否知道是否有一种方法可以通过编程方式为您自己的浏览器中的另一个选项卡获取该端点(如果Puppeter正在扩展的后台窗口中运行)?
let asyncawait = true;
try {
new Function('async function test(){await 1}');
} catch (error) {
asyncawait = false;
}