javascript - 使用 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)
有什么想法我在这里做错了吗?任何指针将不胜感激。谢谢!
解决方案
推荐阅读
- r - 具有逐项更改的数据形状
- javascript - 在 forEach 循环中被覆盖的对象值
- html - 在 Android 和 iOS 上自动播放背景视频
- angular - 什么是 Angular 中的编译上下文?
- python - 当我尝试导入包时使用 pip 安装包它显示一些错误 ImportError no module names "package name"
- sql - SQL:如何在单个 isnull 场景的列中创建 2 个单独的值?
- winforms - 如何在没有自定义控件或单独字段的情况下获取 TrackBar 的旧值?
- apache-flink - Apache Flink:如何使用 Table API 对每 n 行进行分组?
- android - 如何在嵌套的 android 片段上应用 MVP?
- asp.net - 将 Angular SPA 添加到现有的 .net Core MVC 应用程序中