如何在编译为.exe时包含Node.js本机模块
我正在使用pkg将Node.js项目编译成可执行文件。 该项目包括一个名为“节点打印机”的本机模块 Pkg在编译此模块时遇到问题,因为在运行可执行文件时出现以下错误:如何在编译为.exe时包含Node.js本机模块,node.js,yarnpkg,Node.js,Yarnpkg,我正在使用pkg将Node.js项目编译成可执行文件。 该项目包括一个名为“节点打印机”的本机模块 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_
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:
支持使用本机加载项(.node file)。当pkg在require调用中遇到.node文件时,它
将其打包为资产。在某些情况下(如bindings包),模块路径是
生成的Dynamicly和pkg将无法检测到它。在这种情况下,您应该添加.node文件
直接在package.json的资产字段中。
这是mypackage.json文件中的pkg
"pkg": {
"scripts": [
"config/*.js"
],
"assets": [
"views/*",
"views/**/*",
"config/*",
"public/assets/**/*",
"node_modules/printer/lib/node_printer.node"
],
"targets": [
"node14-win"
]},
如您所见,我已将node printer.node文件包含在资产中,但结果仍然相同。
我遗漏了什么?原来我使用了错误的命令来构建。 我用过这个
pkg "main.js" -t node14-win -o build/ckiosk.exe
但是要利用package.json中的配置,我们必须使用
pkg .