【问题标题】:How to include Node.js native modules while compiling to .exe如何在编译为 .exe 时包含 Node.js 本机模块
【发布时间】:2021-07-13 12:32:31
【问题描述】:

我正在使用 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 文件包含在资产中,但结果仍然相同。 我错过了什么?

【问题讨论】:

    标签: node.js yarnpkg


    【解决方案1】:

    原来我一直在使用错误的命令来构建。 我用过这个

    pkg "main.js" -t node14-win -o  build/ckiosk.exe
    

    但是要使用 package.json 中的配置,我们必须使用

    pkg .
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-07
      • 2017-05-26
      • 2015-05-07
      • 1970-01-01
      • 2021-10-21
      相关资源
      最近更新 更多