Nej*_*ani 1 javascript google-chrome heroku node.js puppeteer
我目前正在研究一个项目,在该项目中,我需要构建一个应用程序,该应用程序需要在浏览器中打开URL才能使用其中的某些功能。
为此,我用的木偶,以打开在服务器端的浏览器,所以我可以使用它像一个API一个脚本的NodeJS里面。
这是代码(nodejs):
app.get('/do', (req, res) => {
console.log("ok");
(async() => {
var browser = await puppeteer.launch(
{ args: ['--no-sandbox','--disable-setuid-sandbox'], headless: false });
var page = await browser.newPage();
await page.goto('https://url.com');//i hid the url for personal reason
await page.waitFor(1000); // to wait for 1000ms
await page.waitFor('body div'); // to wait for the 'body div' selector in body
await page.waitFor(() => Math.random() < 0.5); // to wait for the predicate
await page.screenshot({
path: 'public/photo.png'
});
await browser.close();
await res.end('<html><head></title></head><body><h1><img src=photo.png ></img></h1></body></html>');
})();
});
Run Code Online (Sandbox Code Playgroud)
该代码在本地工作,但是当我在heroku上部署时,会显示此错误:
app [web.1]:/ send
app [web.1] :(节点:4)UnhandledPromiseRejectionWarning:未处理的Promise拒绝(拒绝ID:1):错误:无法启动chrome!
app [web.1]:/app/node_modules/puppeteer/.local-chromium/linux-515411/chrome-linux/nacl_helper:加载共享库时出错:libnss3.so:无法打开共享对象文件:没有此类文件或目录
app [web.1]:[21:21:1228 / 131735.202176:ERROR:nacl_fork_delegate_linux.cc(316)]错误的NaCl助手启动确认(0字节)
app [web.1]:
app [web.1]:
app [ web.1]:疑难解答:https : //github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md
应用程序[web.1]:
app [web.1] :(节点:4)[DEP0018] DeprecationWarning:已弃用未处理的承诺拒绝。将来,未处理的承诺拒绝将以非零的退出代码终止Node.js进程。
但是,如果我删除了headless: false它,就可以了,但问题是该网址显示的网页变暖,我需要使用chrome或mozilla或safari等浏览器。
我该如何解决这个问题?
您需要将Puppeteer Heroku构建包包括在您的应用程序的构建包列表中。转到您的Heroku仪表板并打开您的应用程序。转到设置>构建包>添加构建包,然后使用此URL。
https://github.com/jontewks/puppeteer-heroku-buildpack
Run Code Online (Sandbox Code Playgroud)
单击添加buildpack时,只需将该URL粘贴到输入中,然后单击“保存”即可。在下一次部署中,您的应用程序还将安装Puppeteer需要运行的依赖项。
请参阅故障排除指南以获取更多帮助。
这对我有用。首先,我清除了所有构建包,然后添加了 puppeteer-heroku-buildpack 和 heroku/nodejs:
$ heroku buildpacks:clear
$ heroku buildpacks:add --index 1 https://github.com/jontewks/puppeteer-heroku-buildpack
$ heroku buildpacks:add --index 1 heroku/nodejs
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
849 次 |
| 最近记录: |