如何解决如何在编译为 .exe 时包含 Node.js 本机模块
我正在使用 pkg 将我的 Node.js 项目编译为可执行文件。 该项目包含一个名为“node-printer”的本机模块。
Pkg 编译此模块时出现问题,因为当我运行可执行文件时出现此错误:
pkg/prelude/bootstrap.js:1359
throw error;
^
.....
(internal/modules/cjs/loader.js:1218:10),Module.load (internal/modules/cjs/loader.js:1047:32)] {
code: 'MODULE_NOT_FOUND',requireStack: [
'C:\\snapshot\\ckiosk\\node_modules\\printer\\lib\\printer.js','C:\\snapshot\\ckiosk\\controllers\\receiptController.js','C:\\snapshot\\ckiosk\\api\\ajax.js','C:\\snapshot\\ckiosk\\webApp.js','C:\\snapshot\\ckiosk\\main.js'
]
这是来自 pkg readme:
支持使用本机插件(.node 文件)。当 pkg 在 require 调用中遇到 .node 文件时,它会 将其打包为资产。在某些情况下(比如绑定包),模块路径是 动态生成,pkg 将无法检测到它。在这种情况下,您应该添加 .node 文件 直接在 package.json 中的 assets 字段中。
这是我的 package.json 文件中的 pkg
"pkg": {
"scripts": [
"config/*.js"
],"assets": [
"views/*","views/**/*","config/*","public/assets/**/*","node_modules/printer/lib/node_printer.node"
],"targets": [
"node14-win"
]},
如您所见,我已将节点打印机 .node 文件包含在资产中,但结果仍然相同。 我错过了什么?
解决方法
事实证明我一直在使用错误的命令来构建。 我用过这个
pkg "main.js" -t node14-win -o build/ckiosk.exe
但是要使用 package.json 中的配置,我们必须使用
pkg .
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。