解决puppeteer下载失败 Failed to download Chromium r515411

解决 puppeteer 下载失败 Failed to download Chromium r515411

问题

很久没 npm i puppeteer 了,最近没办法科学上网,下载失败了,尝试使用了 cnpm 安装,也是下载失败

可能会遇到这样的错误

puppeteer@0.13.0 install /Users/guipeng/Desktop/ldl/puppeteer/node_modules/puppeteer
node install.js

ERROR: Failed to download Chromium r515411! Set "PUPPETEER_SKIP_CHROMIUM_DOWNLOAD" env variable to skip download.
{ Error: read ETIMEDOUT
at _errnoException (util.js:1041:11)
at TLSWrap.onread (net.js:606:25) code: 'ETIMEDOUT', errno: 'ETIMEDOUT', syscall: 'read' }
npm WARN enoent ENOENT: no such file or directory, open '/Users/guipeng/Desktop/ldl/puppeteer/package.json'

或者

npm ERR! code 1
npm ERR! path E:\项目-临时\test_install_puppeteer\node_modules\puppeteer
npm ERR! command failed
npm ERR! command C:\WINDOWS\system32\cmd.exe /d /s /c node install.mjs
npm ERR! PUPPETEER_DOWNLOAD_HOST is deprecated. Use PUPPETEER_DOWNLOAD_BASE_URL instead.
npm ERR! ERROR: Failed to set up Chrome r119.0.6045.105! Set "PUPPETEER_SKIP_DOWNLOAD" env variable to skip download.
npm ERR! Error: Download failed: server returned code 404. URL: https://cdn.npmmirror.com/binaries/119.0.6045.105/win64/chrome-win64.zip
npm ERR!     at file:///E:/%E9%A1%B9%E7%9B%AE-%E4%B8%B4%E6%97%B6/test_install_puppeteer/node_modules/@puppeteer/browsers/lib/esm/httpUtil.js:74:31
npm ERR!     at ClientRequest.requestCallback (file:///E:/%E9%A1%B9%E7%9B%AE-%E4%B8%B4%E6%97%B6/test_install_puppeteer/node_modules/@puppeteer/browsers/lib/esm/httpUtil.js:52:13)
npm ERR!     at Object.onceWrapper (node:events:629:26)
npm ERR!     at ClientRequest.emit (node:events:514:28)
npm ERR!     at HTTPParser.parserOnIncomingClient (node:_http_client:693:27)
npm ERR!     at HTTPParser.parserOnHeadersComplete (node:_http_common:119:17)
npm ERR!     at TLSSocket.socketOnData (node:_http_client:535:22)
npm ERR!     at TLSSocket.emit (node:events:514:28)
npm ERR!     at addChunk (node:internal/streams/readable:545:12)
npm ERR!     at readableAddChunkPushByteMode (node:internal/streams/readable:495:3)

解决puppeteer下载失败

遇见问题只能老老实实解决问题,既然没办法科学上网,那么只能是通过国内镜像源下载,但 cnpm不行。找了下原因:在 github puppeteer 项目中有这样一个 issues:https://github.com/puppeteer/puppeteer/issues/1597

按照 vc1 所说的可以解决,贴一下有用的信息:

2023 update:

npm config set registry https://registry.npmmirror.com

npm config set registry https://mirrors.cloud.tencent.com/npm/

对于Puppeteer20.1以上的版本,可以通过以下方式使用国产镜像源:

puppeteer-download-base-url="https://cdn.npmmirror.com/binaries/chrome-for-testing"

19以下版本还是原来的方式:

puppeteer-download-host="https://cdn.npmmirror.com/binaries"

  1. 解决方法是首先配置配置npm镜像源,上面列了两个镜像源,一个 tencent,一个是淘宝团队的,都可以用。

  2. 然后是配置 puppeteer 的下载地址,在19以下的版本,puppeteer 关联的 Chromium 的下载地址可以通过 puppeteer-download-host 进行配置,在 Puppeteer20.1 以上的版本则需要通过 PUPPETEER_DOWNLOAD_BASE_URL 进行配置,上面的报错信息中也给到了这个提示。

  3. 在项目根目录中创建.npmrc文件,在文件中配置:

    # 19以下版本
    PUPPETEER_DOWNLOAD_HOST = https://cdn.npmmirror.com/binaries
    
    # 20以上的版本
    PUPPETEER_DOWNLOAD_BASE_URL = https://cdn.npmmirror.com/binaries/chrome-for-testing
    
  4. 然后删除node_modules重新下载即可

  5. 如果还是不行试一下sudo npm install puppeteer --unsafe-perm=true --allow-root

贴一下 Puppeteer 是啥

Puppeteer 是一个 Node.js 库,它提供了一个高级 API 来通过 开发工具协议 控制 Chrome/Chromium。 Puppeteer 默认以 无头 模式运行,但可以配置为在完整 (“有头”) Chrome/Chromium 中运行。

总结

puppeteer 的下载问题不在自身,而在于其联动下载的 Chromium,Chromium 不能下载的原因众所周知,能科学上网其实也没这么麻烦了,如不能科学上网就需要找镜像了,配置 Chromium 的下载地址后完美解决。

附一个 Chromium 查看所有命令配置地址

https://peter.sh/experiments/chromium-command-line-switches/

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值