在阿里云服务器上,系统是Debian8.9,安装puppeteer是使用cnpm i puppeteer的命令安装的,安装也成功了,在进行测试的时候出现了问题,我的测试代码如下: const puppeteer = require(‘puppeteer’);
(async () => { let browser = await puppeteer.launch({ executablePath: ‘./chromium/chrome.exe’, headless: false }); const page = await browser.newPage(); await page.goto(‘http://music.163.com/’); await page.screenshot({path: ‘music.png’}); browser.close(); })(); 运行后出现如下的错误: (node:23748) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: Failed to launch chrome! spawn ./chromium/chrome.exe ENOENT
TROUBLESHOOTING: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md
(node:23748) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. 请问一下有没有碰到这样的,怎么样来解决呢???感谢!!!
Error: Failed to launch chrome! spawn ./chromium/chrome.exe ENOENT
错误很明显chrome启动失败,executablePath: './chromium/chrome.exe'
linux不可以用Windows的chromium,cnpm安装成功的话puppeteer不需要额外指定chromium路径。
@Zero2key 感谢回复!!!我修改了一下程序如下: const puppeteer = require(‘puppeteer’);
(async () => { try{ let browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto(‘http://music.163.com/’); await page.screenshot({path: ‘music.png’}); // browser.close(); }catch(err) { console.log('pid: ‘,process.pid,’ ',err.stack); }
})(); 再次运行还是出现了如下错误: pid: 26774 Error: Failed to launch chrome! /var/webSpider/node_modules/_puppeteer@1.9.0@puppeteer/.local-chromium/linux-594312/chrome-linux/chrome: error while loading shared libraries: libX11-xcb.so.1: cannot open shared object file: No such file or directory
TROUBLESHOOTING: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md
at onClose (/var/webSpider/node_modules/_puppeteer@1.9.0@puppeteer/lib/Launcher.js:339:14)
at Interface.helper.addEventListener (/var/webSpider/node_modules/_puppeteer@1.9.0@puppeteer/lib/Launcher.js:328:50)
at emitNone (events.js:110:20)
at Interface.emit (events.js:207:7)
at Interface.close (readline.js:365:8)
at Socket.onend (readline.js:146:10)
at emitNone (events.js:110:20)
at Socket.emit (events.js:207:7)
at endReadableNT (_stream_readable.js:1047:12)
at _combinedTickCallback (internal/process/next_tick.js:102:11)
请问是什么问题呢???
pid: 26774 Error: Failed to launch chrome!
/var/webSpider/node_modules/_puppeteer@1.9.0@puppeteer/.local-chromium/linux-594312/chrome-linux/chrome: error while loading shared libraries: libX11-xcb.so.1: cannot open shared object file: No such file or directory
TROUBLESHOOTING: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md
仔细阅读下这段
@atian25 就是没看明白什么意思。。。
@atian25 我现在npm包的安装路径是/var/webSpider/,在这个路径下node_modules文件里包含一个_puppeteer@1.9.0@puppeteer,请问一下,chrome的路径应该怎么来设置呢??新手,还望见谅。
那段报错的意思是,系统缺少依赖库,然后后面给了一个 URL,里面有相关的脚本
@atian25 感谢回复,对于这个问题我真的是一点头绪都没有,这个报错应该怎么来解决呢??是因为我的npm依赖包不完整嘛???
安装puppeteer还有一种方法是跳过下载Chromium,然后手动安装chrome,比如下面
npm i --save puppeteer --ignore-scripts
手动安装chrome
sudo apt install google-chrome
截图功能
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({ executablePath: 'google-chrome' });
const page = await browser.newPage();
await page.goto('https://y.qq.com');
await page.screenshot({path: 'yqq.png'});
browser.close();
})();
@quanpf2481 那个是操作系统的 so 文件。。。你需要补充下 Linux 的基础。那个链接里面已经给出了各种环境下的依赖安装方式了。
@xpplee sudo apt install google-chrome执行的结果是: E: Unable to locate package google-chrome 请问是什么原因呢??
@atian25 哦哦,感谢感谢,我一直以为是npm包的问题。
@quanpf2481 因为源里没有这个google-chrome软件,你可以百度搜索Debian chrome,应该有很多教程教怎么安装chrome
系统依赖的问题,要多安装几个包,你可以百度unbuntu安装puppeteer常见问题试试看里面的方法
如果依赖装完了,检查下node_modules对应目录下有没有chromium的可执行文件,如果有的话,还有个情况是,你系统是32位的,它给你下了个64位的。。我就遇到过这情况,非常迷,后来自己手动下了个32位的搞定
@ta7sudan 感谢回复!!我的系统是Debian8.9无图形界面版本,你说的chromium的可执行文件是指什么??在node_modules下有一个文件_puppeteer@1.9.0@puppeteer,这个文件下面有个.local-chromium文件,请问应该来怎么做呢???
@entrehuihui 看了一些,没有什么头绪,真是头大!!!!
最后说一句吧,要的依赖,对应的做法,在那个 URL 里面写的明明白白清清楚楚,并不是没有头绪,而是欲速则不达,打打 Linux 基础吧。
@quanpf2481 确实需要补下Linux了, 你这里缺少libX11-xcb
$ sudo apt install libX11-xcb
试试吧, 不确定这东西在Debian仓库里叫什么, 靠自动补全看看