FireBase云功能错误:缺少木偶 我正在使用Puppeteer-Extra来完成我的firebase云功能。但是,当触发功能时,我发现了一个错误,说Puppeteer缺少并要求我安装Puppeteer,而我的Alr ...

问题描述 投票:0回答:1
{ "name": "functions", "description": "Cloud Functions for Firebase", "scripts": { ...... }, "engines": { "node": "8" }, "dependencies": { "firebase-admin": "^8.10.0", "firebase-functions": "^3.6.1", "puppeteer": "^5.4.1", "puppeteer-extra": "^3.1.15", "puppeteer-extra-plugin-stealth": "^2.6.3" }, "devDependencies": { "firebase-functions-test": "^0.2.0" }, "private": true }

云功能的开始 const functions = require('firebase-functions'); const puppeteer = require('puppeteer-extra'); const StealthPlugin = require('puppeteer-extra-plugin-stealth'); puppeteer.use(StealthPlugin()); exports.myFunction = functions.https.onCall((data, context) => { async function XXX() { try { const browser = await puppeteer.launch({ headless: false }); ...... } catch(e) { ...... } } }

Full错误消息

Puppeteer is missing. :-) Note: puppeteer is a peer dependency of puppeteer-extra, which means you can install your own preferred version. - To get the latest stable version run: 'yarn add puppeteer' or 'npm i puppeteer' Alternatively: - To get puppeteer without the bundled Chromium browser install 'puppeteer-core' - To use puppeteer-firefox install 'puppeteer-firefox' and use the 'addExtra' export

update

我更换了 const puppeteer = require('puppeteer-extra'); const StealthPlugin = require('puppeteer-extra-plugin-stealth'); puppeteer.use(StealthPlugin());

const puppeteer = require('puppeteer');

然后我遇到了一个错误部署该功能。错误消息是

Function failed on loading user code. Error message: Code in file index.js can't be loaded. Is there a syntax error in your code?

i我检查了如果我切换回Puppeteer-Extra而不修改代码的任何其他部分,则部署工作正常。
	
我遇到了一个非常相似的问题。我当时正在研究一个节点项目,并安装了puppeteer用纱线刮擦网站,所有这些设置都归入一个docker容器(以后会在我的回答中解释为什么我要提到这一点)。

因此,这个问题与您的问题完全一样,即使已经安装了木偶,我也会遇到我缺少木偶的错误。我试图删除node_modules,然后再次安装,重新创建整个环境等,但似乎没有什么可用。

解开我的解决方案是添加我的
package.json
依赖项:

"agent-base": "^6.0.2", "https-proxy-agent": "^5.0.1",
原因是Puppeteer因该错误消息而失败,这是一条误导消息,但是它正在从Inside Puppeteer/node_modules/https_agent/src/agent.ts文件或类似的命名文件中丢弃错误关于文件名。

重要的是,https_agent/src不是有效的路径,甚至不存在,但是
node.js firebase google-cloud-functions puppeteer
1个回答
0
投票
试图访问该文件,当然也失败了。

SO,通过添加

agent-base

基础依赖性解决了问题,我能够将我的

yarn

命令运行到下一个错误的程度。 我也明智地在Puppeteer的启动功能中添加了一些额外的参数,因此启动看起来像:

await Puppeteer.launch({ headless: true, defaultViewport: null, args: ['--no-sandbox', '--disable-setuid-sandbox'] })

我的进口是您在更新答案之前的初始进口:

import Puppeteer from 'puppeteer-extra' import Stealth from 'puppeteer-extra-plugin-stealth'

从那里移动,并从我的第一个误导性错误中解脱出整个软件包缺少的错误,我在木偶执行时遇到了一个问题,可以打开无头浏览器。解决方案是在我的

Dockerfile
中添加这2行:

RUN apk add git netcat-openbsd chromium ENV PUPPETEER_EXECUTABLE_PATH="/usr/bin/chromium-browser"

在我的命令正常运行后,添加到crontab中,一切都很顺畅。
我大部分时间都花费的最大的事情是误导错误。
    

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.