首页 > 解决方案 > 使用 cronjob 运行脚本时缺少 Puppeteer

问题描述

尝试使用 cron 作业运行 puppeteer 时遇到一个奇怪的问题。代码如下:

const puppeteer = require('puppeteer-extra');
const stealthPlugin = require('puppeteer-extra-plugin-stealth')();

stealthPlugin.enabledEvasions.delete('user-agent-override');
puppeteer.use(stealthPlugin);

const userAgent = UserAgentOverride({
    userAgent: 'some agent,
    locale: 'en-US,en'
});
puppeteer.use(userAgent);

const options = {
    headless: true,
    ignoreHTTPSErrors: true,
    args: [
        '--disable-sync',
        '--ignore-certificate-errors'
    ],
    ignoreDefaultArgs: ['--enable-automation']
};

const browser = await puppeteer.launch(options);

当我在终端中运行代码时没有问题,但是如果从 cron 作业运行代码会失败。我打印了 cron 作业的输出:

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

我不知道如果它在终端中运行良好,为什么它会说它丢失了。看着我的package.json我有:

  "dependencies": {
    "bcryptjs": "^2.4.3",
    "cookie-parser": "^1.4.5",
    "cors": "^2.8.5",
    "express": "^4.17.1"
    "jsonwebtoken": "^8.5.1",
    "mongoose": "^5.10.2",
    "nodemon": "^2.0.4",
    "puppeteer": "^5.3.1",
    "puppeteer-extra": "^3.1.15",
    "puppeteer-extra-plugin-stealth": "^2.6.1"
  }

我尝试不使用puppeteer-extra并且只是常规puppeteer但我收到此错误:

    throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'original', 'function');
    ^

TypeError [ERR_INVALID_ARG_TYPE]: The "original" argument must be of type function
    at promisify (internal/util.js:209:11)
    at Object.<anonymous> (/home/kekearif/my-project/node_modules/extract-zip/index.js:11:18)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/home/kekearif/my-project/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserFetcher.js:48:39)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/home/kekearif/my-project/node_modules/puppeteer/lib/cjs/puppeteer/node/Launcher.js:43:29)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)

有什么想法我在这里做错了吗?任何指针将不胜感激。谢谢!

标签: javascriptpuppeteer

解决方案


推荐阅读