当前位置: 首页 > article >正文

使用 pkg 打包 Puppeteer 应用:跨平台自动化的轻量级选择

使用 pkg 打包 Puppeteer 应用

pkg 是一个非常强大的工具,它允许你将 Node.js 项目打包成独立的可执行文件,这意味着你可以在没有安装 Node.js 环境的设备上运行该应用。这对于希望分发不暴露源代码的应用程序、创建跨平台的快速演示版本或简化部署流程的开发者来说,是一个非常有用的工具。

使用了2天用pkg打包,在运行main.exe总提示 Passed function cannot be serialized 错误。后面终止成功运行了。

安装 pkg

首先,你需要全局安装 pkg。在你的命令行界面中运行以下命令:

npm install -g pkg

打包你的 Node.js 项目

使用 pkg 打包你的项目非常简单。首先,确保你有一个入口文件,例如 index.js。然后,在项目目录下运行 pkg 命令:

pkg index.js --target=node16 --platform=all --output=myapp

这里的参数解释如下:

  • index.js 是你的入口文件路径。
  • --target=node16 指定目标 Node.js 版本,可以是具体的版本号或 latest
  • --platform=all 打包所有支持的平台(或指定具体平台如 linux, win, macos)。
  • --output=myapp 输出文件名前缀,生成的文件将是 myapp_*.exe 或相应格式。

package.json的内容

{
  "name": "puppeteer-extra",
  "version": "1.0.0",
  "main": "dist/bundle.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "rollup --config rollup.config.mjs"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "description": "",
  "dependencies": {
    "browsers": "^1.0.2",
    "js-yaml": "^4.1.0",
    "puppeteer": "^23.6.0",
    "puppeteer-extra-plugin-recaptcha": "^3.6.8",
    "puppeteer-extra-plugin-stealth": "^2.11.2",
    "yarn": "^1.22.22"
  },
  "bin": {
    "your-app": "src/main.js"
  },
  "devDependencies": {
    "@rollup/plugin-commonjs": "^28.0.1",
    "@rollup/plugin-node-resolve": "^15.3.0",
    "electron": "^33.0.2",
    "electron-builder": "^25.1.8",
    "electron-packager": "^17.1.2",
    "puppeteer-core": "^23.6.0",
    "puppeteer-extra": "^3.3.6",
    "rollup": "^4.24.2",
    "webpack": "^5.95.0",
    "webpack-cli": "^5.1.4"
  },
  "build": {
    "appId": "com.example.yourapp",
    "productName": "YourApp",
    "win": {
      "target": "nsis"
    }
  },
  "pkg": {
    "scripts": [
      "node_modules/puppeteer-extra-plugin-stealth/**/*"
    ]
  }
}

注意事项

  • 当打包私有依赖或非标准路径的资源时,可能需要在 package.jsonpkg 配置中明确指定脚本和资产路径。
  • 对于生产环境,考虑安全性需求,尤其是 macOS 上的代码签名要求。
  • 跨平台打包可能需要额外的设置,比如在 Linux 上配置 QEMU 用于模拟其他架构。

使用 pkg 打包 Puppeteer

由于 Puppeteer 是一个庞大的 Node.js 库,并且包含二进制文件,它并不适合被打包到浏览器环境中。但是,如果你确实需要在浏览器环境中使用某些 Puppeteer 功能,你可以使用 puppeteer-core,它是 Puppeteer 的一个轻量级版本,不包含自动下载的浏览器。

在使用 pkg 打包包含 puppeteer-core 的项目时,你可能会遇到路径问题或序列化问题。为了解决这些问题,你可以在 pkg 命令中添加 --public 参数,这将帮助你正确地序列化传递的函数:

pkg index.js -t=win --public

–public很重要,不加上会出现下面的错误

 Passed function cannot be serialized!

如果在运行pkg时提示有下载fetched-v18.5.0-win-x64,网上的教程下载fetched-v18.5.0-win-x64都不对我花了2天时间都没有成功。后面来硬的,找人用科学上网下载成功了。

此外,确保你的 Puppeteer 配置正确,特别是 executablePath 参数,这将指向你的 Chrome 可执行文件路径。如果你在不同平台上打包,确保为每个平台指定正确的浏览器路径。

通过上述步骤,你可以成功地使用 pkg 打包你的 Node.js 项目,包括使用 Puppeteer 或 puppeteer-core 的应用。这将使你的应用在不同环境中更加易于部署和运行。


http://www.kler.cn/a/374431.html

相关文章:

  • Chrome被360导航篡改了怎么改回来?
  • 图解HTTP-HTTP状态码
  • 复习打卡大数据篇——Hadoop HDFS 03
  • 计算机毕业设计Python+Spark知识图谱酒店推荐系统 酒店价格预测系统 酒店可视化 酒店爬虫 酒店大数据 neo4j知识图谱 深度学习 机器学习
  • AIA - IMSIC之二(附IMSIC处理流程图)
  • 打造高效租赁小程序让交易更便捷
  • 管家婆财贸ERP BB072.销售单草稿明细生成组装拆分单
  • [实战-11] FlinkSql设置时区(table.local-time-zone)
  • MySQL 的 select * 会用到事务吗?
  • Ethernet 系列(6)-- 基础学习::OSI Model
  • 金融小白两周完成一个量化系统 (二)项目进度以及数据获取
  • 数据分析可视化:散点图矩阵与雷达图的生成
  • 时序数据分析:工业时序数据的特点
  • 【python ASR】win11-从0到1使用funasr实现本地离线音频转文本
  • golang的多表联合orm
  • 关于回溯与分支限界的一些介绍
  • 【第一个qt项目的实现和介绍以及程序分析】【正点原子】嵌入式Qt5 C++开发视频
  • 神经网络:解析人工智能的智慧基石
  • WPF+MVVM案例实战(十四)- 封装一个自定义消息弹窗控件(下)
  • 二:Linux学习笔记(第一阶段)-- Linux命令
  • 记一次:Clickhouse同步mysql数据库
  • 基于Spring Boot的医疗陪护系统设计与实现(源码+定制+开发)病患陪护管理平台、医疗服务管理系统、医疗陪护信息平台
  • 【PCL】vs2022配置PCL环境
  • RHCE第三次实验
  • 强大的文本编辑器Notepad++8.4.6 最新版
  • 【回溯】力扣 77.组合