Javascript Puppeter-如何在Firebase云函数中使用userDataDir?

Javascript Puppeter-如何在Firebase云函数中使用userDataDir?,javascript,node.js,firebase,google-cloud-functions,puppeteer,Javascript,Node.js,Firebase,Google Cloud Functions,Puppeteer,这个傀儡脚本在本地运行时运行良好,但是在云函数上运行时不使用userDataDir。我尝试了初始化userDataDir的所有组合 更新: 文件夹结构: Functions ├── index.js │ ├── userDataDir index.js: const functions = require("firebase-functions"); const puppeteer = require("puppeteer"); const path = require("path");

这个傀儡脚本在本地运行时运行良好,但是在云函数上运行时不使用userDataDir。我尝试了初始化userDataDir的所有组合

更新:

文件夹结构:

Functions
├── index.js
│   ├── userDataDir

index.js:

const functions = require("firebase-functions");
const puppeteer = require("puppeteer");
const path = require("path");

exports.testPupFunction = functions
  .region("us-west1")
  .runWith({ memory: "1GB", timeoutSeconds: 60 })
  .https.onRequest(async (req, res) => {
    const browser = await puppeteer.launch({
      headless: true,
      ignoreHTTPSErrors: true,
      args: [
        `--user-data-dir=${path.resolve(__dirname, "./userDataDir")}`,
         `--user-data-dir=${path.resolve(__dirname, "userDataDir")}`,
        `--user-data-dir=./userDataDir`,

        "--disable-setuid-sandbox",
        "--no-sandbox"
      ],
      userDataDir: "./userDataDir"
      userDataDir: "userDataDir"
    });
  try {
      const page = await browser.newPage();
      await page.setViewport({ width: 800, height: 600 });

      const delay = ms => new Promise(resolve => setTimeout(resolve, ms));

      await page.goto("stackoverflow.com", {
        waitUntil: "networkidle0"
      });
      await delay(1000);
      const buffer = await page.screenshot({ fullPage: true });
      res.type("image/png").send(buffer);
    } catch (e) {
      await browser.close();
      res.status(500).send(e.toString());
    }
    await browser.close();
  });

有没有办法解决这个问题?谢谢

请编辑该问题,以准确说明您正在部署什么,以显示请求的数据目录在运行时应可用。如果您没有部署它,它将不可用。完成。可能是这样的-我只是简单地部署它(意味着它包含在我“firebase deploy”的文件夹中)&添加--user data dir args。firebase CLI将打包“functions”文件夹的全部内容,并在运行时使函数可以使用这些内容。我希望
\uuu dirname
是该部署的根目录,您应该能够读取这些文件。尝试在函数中编写一些代码(使用节点的
fs
模块),以确保您可以单独读取预期的文件,以确保它们存在。我使用fs模块列出目录中的所有文件并确认userDataDir在那里!我还尝试创建一个
tmp
文件夹&将文件夹放在那里,但也没有成功。转储
args
,看看它是否完全包含您期望的内容?此时,您基本上只是调试。