此流星代码使用“木偶师8.0.0”、“木偶师-核心10.0.0”、“木偶师-额外3.1.18”和“木偶师-外挂-隐形2.7.8",给出了以下错误:
错误:无法在本地找到预期的浏览器(chrome)。运行
npm install
下载正确的铬版本(884014)。
尝试了"npm安装“,但没有结果。在线阅读,尝试从package.json依赖项中删除“傀儡-核心”:"^10.0.0“,但没有效果。
任何帮助都是徒劳无功的。谢谢
const puppeteer = require('puppeteer-extra');
const nameH = require('./NameH');
const puppeteerOptions = {
headless: true,
ignoreHTTPSErrors: true,
args: ['--no-sandbox', '--single-process', '--no-zygote', '--disable-setuid-sandbox']
}
let browser;
let pageNameH;
const init = async () => {
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
console.log('1') //>>>>>>>>>>>> Prints 1
puppeteer.use(StealthPlugin());
console.log('2') //>>>>>>>>>>>> Prints 2
browser = await puppeteer.launch(puppeteerOptions);
console.log('3') //>>>>>>>>> DID NOT PRINT <<<<<<<<<<<<<<<
pageNameH = await browser.newPage();
console.log('4')
await pageNameH.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36');
await pageNameH.setViewport({ width: 1366, height: 768 });
await pageNameH.setRequestInterception(true);
blockResources(pageNameH);
}
const blockResources = page => {
page.on('request', (req) => {
if (req.resourceType() == 'stylesheet' || req.resourceType() == 'font' || req.resourceType() == 'image') {
req.abort();
}
else {
req.continue();
}
});
}
export const abc = async (nm, loc) => {
try {
console.log('name try') //>>>>>>>>>>>> Prints "name try"
if (!(browser && pageNameH))
await init();
//use "required" nameh here
} catch (error) { // print the error <<<<<<<<<<<<<<<<<<<<<<<<<
console.log("Could not launch Puppeteer or open a new page.\n" + error);
if (browser && browser.close === 'function') await browser.close();
}
}
// included in package.json
"dependencies": {
"@babel/runtime": "^7.11.2",
"axios": "^0.21.1",
"check": "^1.0.0",
"cheerio": "^1.0.0-rc.6",
"jquery": "^3.5.1",
"meteor-node-stubs": "^1.0.1",
"nightmare": "^3.0.2",
"pending-xhr-puppeteer": "^2.3.3",
"puppeteer": "^8.0.0",
"puppeteer-core": "^10.0.0",
"puppeteer-extra": "^3.1.18",
"puppeteer-extra-plugin-adblocker": "^2.11.11",
"puppeteer-extra-plugin-block-resources": "^2.2.9",
"puppeteer-extra-plugin-stealth": "^2.7.8"
},
发布于 2021-08-10 18:12:35
也许你可以试试这个,它适用于linux(centos)、木偶师(10.2.0)。
cd ./node_modules/puppeteer
npm run install
它将把铬下载到./node_node/puppeteer/..local chromium。
发布于 2021-06-27 10:20:50
我也有同样的问题。我检查了我的env变量,即使PUPPETEER_SKIP_CHROMIUM_DOWNLOAD设置为false,它仍然不能工作。在我删除变量(为mac未设置PUPPETEER_SKIP_CHROMIUM_DOWNLOAD )之后,它就正常工作了。
有关受养人:
"dependencies": {
"chrome-aws-lambda": "^10.0.0",
"puppeteer-core": "^10.0.0",
},
"devDependencies": {
"puppeteer": "^10.0.0",
}
发射铬:
import chromium from "chrome-aws-lambda";
const browser = await chromium.puppeteer.launch({
executablePath: await chromium.executablePath,
});
发布于 2021-09-15 02:18:27
我也有过同样的问题。对我起作用的是指定作为executablePath
木偶引导者发射选项,完全路径到本地铬使用的木偶。
就像这样:
const launchOptions = {
// other options (headless, args, etc)
executablePath: '/home/jack/repos/my-repo/node_modules/puppeteer/.local-chromium/linux-901912/chrome-linux/chrome'
}
正如在另一个答案中所指出的,引用铬本地二进制文件似乎也是可行的,但我认为这是一个更糟的解决方案,因为Puppeteer是保证只适用于本地捆绑版本的铬。
https://stackoverflow.com/questions/68051648
复制