当我尝试运行node app.js
时,出现错误消息:
该消息无法启动浏览器进程!产卵 /Users/iliebogdanbarbulescu/Downloads/firstProject/node_modules/chromium/lib/chromium/chrome-mac/Chromium.app
访问
我做什么
我检查了/Users/iliebogdanbarbulescu/Downloads/firstProject/node_modules/chromium/lib/chromium/chrome-mac/Chromium.app
上的文件夹,但该文件未压缩。可以运行。
注意:
如果我尝试在没有路径的情况下执行,它将起作用,但是
我想使用Chrome或Chromium来打开一个新页面。
const browser = await puppeteer.launch({headless:false'});
const express = require('express');
const puppeteer = require('puppeteer');
const app = express();
(async () => {
const browser = await puppeteer.launch({headless:false, executablePath:'/Users/iliebogdanbarbulescu/Downloads/firstProject/node_modules/chromium/lib/chromium/chrome-mac/Chromium.app'});
const page = await browser.newPage();
await page.goto('https://google.com', {waitUntil: 'networkidle2'});
})().catch((error) =>{
console.error("the message is " + error.message);
});
app.listen(3000, function (){
console.log('server started');
})
答案 0 :(得分:3)
如果您在此确切的浏览器中导航到chrome://version/
页面,它将显示Executable Path
,这是您用作executablePath
操纵up启动选项所需的确切字符串。
通常,chrome的路径在MAC上看起来像这样:
/Applications/Google Chrome.app/Contents/MacOS/Google Chrome
如果铬位于node_modules
文件夹中,则类似这样:
/Users/iliebogdanbarbulescu/Downloads/firstProject/node_modules/chromium/lib/chromium/chrome-mac/Chromium.app/Contents/MacOS/Chromium
现在,如果您比较用于executablePath
的字符串,则该字符串不同于使用上述方法检索到的字符串。 恰好将/Contents/MacOS/Chromium
添加到当前路径的末尾以使其起作用。
注意:与puppeteer捆绑在一起的铬是可与实际pptr版本一起使用的版本:如果打算使用其他基于chrome /或chrome的浏览器,则可能会遇到意外问题。>
答案 1 :(得分:1)
使用位置镶边:https://www.npmjs.com/package/locate-chrome
const locateChrome = require('locate-chrome');
const executablePath = await new Promise(resolve => locateChrome(arg => resolve(arg)));
const browser = await puppeteer.launch({ executablePath });
答案 2 :(得分:0)
关注@theDavidBarton:
Puppeteer随附的Chromium无法正常工作,但MacBook上的Chrome安装确实可以正常工作。
OS:OS-X 10.15.7(Catalina) 节点版本:v14.5.0
失败的代码:
const browser = await puppeteer.launch({
headless: true,
executablePath: "/users/bert/Project/NodeJS/PuppeteerTest/node_modules/puppeteer/.local-chromium/mac-818858/chrome-mac/Chromium.app/Contents/MacOS/Chromium"
});
成功的代码:
const browser = await puppeteer.launch({
headless: true,
executablePath: "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
});
完整代码,只是Puppeteer网站上的第一个示例:
const puppeteer = require('puppeteer');
(async () => {
try {
const browser = await puppeteer.launch({headless: true, executablePath: "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"});
const page = await browser.newPage();
await page.goto('https://example.com');
await page.screenshot({path: 'example.png'});
await browser.close();
} catch (err) {
console.log(err);
}
})();
是的,我得到了屏幕截图! :-)