Puppeteer安装有错误

时间:2017-10-04 12:49:20

标签: google-chrome-headless puppeteer

我和木偶戏有问题。我无法在我的debian 8.7.1上安装它。 这些是步骤:

1.install chrome:

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt-get -f install
sudo dpkg -i google-chrome-stable_current_amd64.deb

2.install nodejs&木偶:

apt-get install curl
curl -sL https://deb.nodesource.com/setup_8.x | bash -
sudo apt-get install -y nodejs
npm i puppeteer

当我运行npm i puppeteer时,错误是:

> puppeteer@0.11.0 install /root/node_modules/puppeteer
> node install.js

ERROR: Failed to download Chromium r499413! Set "PUPPETEER_SKIP_CHROMIUM_DOWNLOAD" env variable to skip download.
Error: Download failed: server returned code 403. URL:  https://storage.googleapis.com/chromium-browser-snapshots/Linux_x64/499413 /chrome-linux.zip
at ClientRequest.https.get.response (/root/node_modules/puppeteer/utils/ChromiumDownloader.js:195:21)
at Object.onceWrapper (events.js:316:30)
at emitOne (events.js:115:13)
at ClientRequest.emit (events.js:210:7)
at HTTPParser.parserOnIncomingClient (_http_client.js:565:21)
at HTTPParser.parserOnHeadersComplete (_http_common.js:116:23)
at TLSSocket.socketOnData (_http_client.js:454:20)
at emitOne (events.js:115:13)
at TLSSocket.emit (events.js:210:7)
at addChunk (_stream_readable.js:266:12)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! puppeteer@0.11.0 install: `node install.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the puppeteer@0.11.0 install script.
npm ERR! This is probably not a problem with npm. There is likely   additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2017-10-04T12_32_37_607Z-debug.log

我运行命令npm config set PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true以跳过下载,但它还想下载铬。

有什么想法解决这个问题?

8 个答案:

答案 0 :(得分:2)

尝试 sudo npm install puppeteer --unsafe-perm = true

答案 1 :(得分:1)

  

错误:产生EACCES

这大致意味着由于权限问题,木偶操作员无法执行Chrome。如果您遇到麻烦我有docker image here您可以使用并远程互动。 Chrome和许多Linux发行版的问题在于安装是一个很难解决的问题。

答案 2 :(得分:1)

尝试以下选项;

1) npm config set puppeteer_skip_chromium_download true
2) Add puppeteer_skip_chromium_download=true to .npmrc file where the package.json location

之后运行sudo npm install --unsafe-perm=true --allow-root

参考;

https://github.com/GoogleChrome/puppeteer/issues/2270
https://medium.com/forcit/seo-for-single-page-applications-8543619e1d0c

答案 3 :(得分:0)

如果您已经使用了chrome,则可以使用系统变量来跳过安装

https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#environment-variables

答案 4 :(得分:0)

在使用Puppeteer时,我遇到了类似的问题。 我认为您的问题有两个部分,  1.无法下载Chromium和获取其他403 error是  2. Error: spawn EACCES问题

我将首先介绍Error: spawn EACCES问题,因为它更加细腻和棘手

这是因为您的debian计算机没有安装运行Puppeteer所需的依赖项。这些依赖关系在发行版之间有所不同(CentOS,Ubuntu / Debian等)。

执行以下步骤,

  1. 安装所需的所有依赖项。您可以参考此链接以获取列表https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md#chrome-headless-doesnt-launch-on-unix
  2. 在安装所有依赖项之后,如果您位于VPC /代理之后,请安装npm并在.npmrc中配置代理。
  3. 然后,像往常一样,继续进行npm i puppeteer并照常进行

下一步,解决您无法下载Chromium问题的情况。

您在代理人后面吗?那是我的问题。

在执行npm i puppeteer时,我发现脚本从外部URL下载Chromium,而外部URL在您的日志中是https://storage.googleapis.com/chromium-browser-snapshots/Linux_x64/499413/chrome-linux.zip

npm无法从此外部URL下载,因为代理阻止了它。 我解决此问题的方法是使用代理设置配置.npmrc文件

npm config set proxy http://<proxy_username>:<proxy_passowrd>@<proxy_host>:<proxy_port>

npm config set https-proxy http://<proxy_username>:<proxy_passowrd>@<proxy_host>:<proxy_port>

注意:

  1. 如果您的用户名/密码包含任何特殊字符,则需要对其进行URL编码。例如。如果您的用户名是bruce\wayne,则需要对其进行URL编码为bruce%5Cwayne,其中%5C =“ \”
  2. 如果您的代理没有身份验证,请忽略并

示例:

npm config set proxy http://bruce%5Cwayne:darkknight@11.434.2.23:8080

npm config set https-proxy http://bruce%5Cwayne:darkknight@11.434.2.23:8080

因此,请尝试使用上述命令配置.npmrc文件,然后尝试运行npm i puppeteer。代理将不再阻止外部URL,您将可以下载Chromium。

让我知道这是否可行,如果您有任何疑问,请与我联系。

答案 5 :(得分:0)

我也遇到过类似的问题。最好的解决方法是使用npm init创建一个项目,然后使用命令“ npm install puppeteer --save”安装puppeteer。这样铬也可以毫无问题地安装。希望这会有所帮助。

答案 6 :(得分:0)

升级人偶版本(可选)

npm set strict-ssl false

npm config set puppeteer_skip_chromium_download true

npm install

答案 7 :(得分:0)

请在.npmrc中进行以下设置 puppeteer_download_host = https://npm.taobao.org/mirrors

npm config set puppeteer_download_host https://npm.taobao.org/mirrors