为什么在 linux 上 运行 一个简单的人偶脚本时我会收到此 "Browser is not downloaded" 错误?
Why am I getting this "Browser is not downloaded" error when running a simple puppeteer script on linux?
我已经多次尝试手动下载无头浏览器和其他一些尝试,但错误仍然存在。 运行 Linux 完好
(node:25262) UnhandledPromiseRejectionWarning: Error: Browser is not downloaded. Run "npm install" or "yarn install"
at ChromeLauncher.launch (/home/oem/web-scraping/puppetering/node_modules/puppeteer/lib/Launcher.js:236:15)
(node:25262) UnhandledPromiseRejectionWarning: Unhandled promise
rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:25262) [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.
代码如下:
#!/usr/bin/node
const puppeteer = require('puppeteer');
async function scrape() {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://ratings.fide.com/top.phtml?list=men');
const [ele] = page.$x('//*[@id="main-col"]/table[2]/tbody/tr[2]/td/table/tbody/tr[2]/td[2]/a')
const name = await ele.getProperty('text')
console.log(name)
};
scrape()
使用 chrome 而不是捆绑的 chromium 启动 puppeteer:
const browser = await puppeteer.launch({
executablePath: '/full/path/to/chrome'
});
我以 root 身份安装了带有全局标志的 puppeteer。然后,我以用户身份启动了一个项目,遇到了和你一样的问题。
运行 npm install puppeteer --save
在项目中并作为用户触发了 Chromium 的下载,并解决了这个错误。
不知道为什么 pupeeter 的全局安装不会触发相同的依赖关系。
使用“magepack”时遇到类似问题。以下命令对 运行 有帮助:
apt-get install chromium-browser
export PUPPETEER_EXECUTABLE_PATH=/snap/bin/chromium
谢谢。
如果您 运行 npm install
在带有 CI 管道的容器中,大多数时候未安装 Chromium。
试试 运行 npm ci
,它总能帮到我。
有时是安装问题。只需按照以下步骤操作:
- 已删除 node_modules 文件夹:
rm -rf node_modules
- 同时删除包-lock.json:
rm package-lock.json
- npm 安装
- npm 启动
运行 这个命令在包含 package.json.
的目录中
node node_modules/puppeteer/install.js
这帮助我解决了问题。
我已经多次尝试手动下载无头浏览器和其他一些尝试,但错误仍然存在。 运行 Linux 完好
(node:25262) UnhandledPromiseRejectionWarning: Error: Browser is not downloaded. Run "npm install" or "yarn install"
at ChromeLauncher.launch (/home/oem/web-scraping/puppetering/node_modules/puppeteer/lib/Launcher.js:236:15)
(node:25262) UnhandledPromiseRejectionWarning: Unhandled promise
rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:25262) [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.
代码如下:
#!/usr/bin/node
const puppeteer = require('puppeteer');
async function scrape() {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://ratings.fide.com/top.phtml?list=men');
const [ele] = page.$x('//*[@id="main-col"]/table[2]/tbody/tr[2]/td/table/tbody/tr[2]/td[2]/a')
const name = await ele.getProperty('text')
console.log(name)
};
scrape()
使用 chrome 而不是捆绑的 chromium 启动 puppeteer:
const browser = await puppeteer.launch({
executablePath: '/full/path/to/chrome'
});
我以 root 身份安装了带有全局标志的 puppeteer。然后,我以用户身份启动了一个项目,遇到了和你一样的问题。
运行 npm install puppeteer --save
在项目中并作为用户触发了 Chromium 的下载,并解决了这个错误。
不知道为什么 pupeeter 的全局安装不会触发相同的依赖关系。
使用“magepack”时遇到类似问题。以下命令对 运行 有帮助:
apt-get install chromium-browser
export PUPPETEER_EXECUTABLE_PATH=/snap/bin/chromium
谢谢。
如果您 运行 npm install
在带有 CI 管道的容器中,大多数时候未安装 Chromium。
试试 运行 npm ci
,它总能帮到我。
有时是安装问题。只需按照以下步骤操作:
- 已删除 node_modules 文件夹:
rm -rf node_modules
- 同时删除包-lock.json:
rm package-lock.json
- npm 安装
- npm 启动
运行 这个命令在包含 package.json.
的目录中node node_modules/puppeteer/install.js
这帮助我解决了问题。