Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在编译为.exe时包含Node.js本机模块_Node.js_Yarnpkg - Fatal编程技术网

如何在编译为.exe时包含Node.js本机模块

如何在编译为.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将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_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 .