Why do I need to "reinstall" Puppeteer by running `node install.js` after `npm install`? (Error: Chromium revision is not downloaded.)

Why do I need to "reinstall" Puppeteer by running `node install.js` after `npm install`? (Error: Chromium revision is not downloaded.)

否则,当我尝试使用 Puppeteer 运行 进行测试时,我得到 Error: Chromium revision is not downloaded. Run "npm install" or "yarn install"

似乎 npm i 在我的部门中使用 Puppeteer 就足够了,但是安装完成后,我需要 cd 进入 /node_modules/puppeteer 然后 运行 node install.js 以下载正确的修订版。

当我做初始 npm i 我看到

> puppeteer@1.13.0 install /Users/.../node_modules/puppeteer
> node install.js

Downloading Chromium r549031 - 76 Mb [====================] 100% 0.0s
Chromium downloaded to /Users/.../node_modules/puppeteer/.local-chromium/mac-549031

但这不起作用,我收到了修订错误。

我在 Puppeteer 的目录 node install.js 之后,我看到了

Downloading Chromium r637110 - 85.9 Mb [====================] 100% 0.0s
Chromium downloaded to /Users/.../node_modules/puppeteer/.local-chromium/mac-637110

那我就走了。

知道为什么吗?这是在 macOS 和 Node 10.15 上进行的,我认为在 CI.

中执行此操作会更加困难

我四处搜索,发现其他人也有这个问题,但没有可靠的解决方法。

package.json

    "devDependencies": {
        "@babel/core": "^7.3.3",
        "@babel/preset-env": "^7.3.1",
        "babel-jest": "^24.1.0",
        "babel-loader": "^8.0.5",
        "eslint": "^5.14.1",
        "html-webpack-plugin": "^3.2.0",
        "husky": "1.1.2",
        "jest": "^24.1.0",
        "jest-puppeteer": "^4.1.0",
        "lint-staged": "7.3.0",
        "prettier-eslint-cli": "4.7.1",
        "puppeteer": "^1.13.0",
        "webpack": "^4.29.5",
        "webpack-bundle-analyzer": "^3.1.0",
        "webpack-cli": "^3.2.3",
        "webpack-dev-server": "^3.2.1",
        "webpack-shell-plugin": "^0.5.0"
    },

以下是可能解决此问题的一些步骤,

  • 尝试使用 puppeteer 作为 dependency 而不是 devDependency.
  • 删除任何锁定文件,如 yarn.lockpackage-lock.json
  • 强制清理 npm 缓存 npm cache clean --force
  • 清理纱线缓存(如果安装了纱线)yarn cache clean
  • 现在所有缓存数据都消失了,您可以放心地再次 运行 npm install
  • 如果这会产生您之前遇到的相同错误,请尝试使用 yarn
  • 如果这不能修复错误,请尝试使用 yarn add puppeteer@1.13.0 而不是 ^.
  • 安装精确的 puppeteer 版本

您不必进入 node_modules 文件夹,也不必一直按照上述步骤操作,只是缓存可能在某处损坏。

不幸的是,另一个模块的 package.json 已将 puppeteer_chromium_revision 添加到我的 .npmrc 并且有效地对 Puppeteer 的修订进行了硬编码。

以下步骤对我有用:

  • 删除了锁定文件(如 yarn.lock 和 package-lock.json)
  • 强制清理 npm 缓存(npm 缓存清理 --force / yarn 缓存清理)
  • 运行 npm 安装

我只能通过在命令行中使用以下命令手动安装 Chromium 来解决上述问题

node node_modules/puppeteer/install.js