javascript - Node - 跨平台编译 - PKG

标签 javascript node.js npm binary cross-platform

我目前正在尝试使用 pkg 为 macos 编译 Node 应用程序:

https://github.com/zeit/pkg

首先是我的设置:

macos 10.14.5 (Mojave)
node -v => v11.4.0
npm -v => 6.4.1
pkg -v => 4.4.0

我的第一次尝试:

pkg index.js -t node11-mac-x64 --output dist/app-mac

结果:

> pkg@4.4.0
> Error! No available node version satisfies 'node11'

这就是为什么我切换到:

pkg index.js -t node10-mac-x64 --output dist/app-mac

结果:

> pkg@4.4.0
> Warning
  Cannot include addon %1 into executable.
  The addon must be distributed with executable as %2.
  node_modules/sha3/build/Release/sha3.node
  path-to-executable/sha3.node
> Warning
  Cannot include addon %1 into executable.
  The addon must be distributed with executable as %2.
  node_modules/websocket/build/Release/bufferutil.node
  path-to-executable/bufferutil.node
> Warning
  Cannot include addon %1 into executable.
  The addon must be distributed with executable as %2.
  node_modules/websocket/build/Release/validation.node
  path-to-executable/validation.node
> Warning
  Failed to make bytecode node10-x64 for file /snapshot/app/node_modules/brotli/build/encode.js

但是可执行文件已经生成,所以我尝试运行它:

./app-mac

这导致了彻底的灾难:

pkg/prelude/bootstrap.js:1185
      throw error;
      ^

Error: File '/**/app/node_modules/linebreak/src/classes.trie' was not included into executable at compilation stage. Please recompile adding it as asset or script.
    at error_ENOENT (pkg/prelude/bootstrap.js:429:17)
    at readFileFromSnapshot (pkg/prelude/bootstrap.js:657:29)
    at Object.fs.readFileSync (pkg/prelude/bootstrap.js:700:18)
    at Object.<anonymous> (/snapshot/app/node_modules/linebreak/src/linebreaker.js:15:32)
    at Object.<anonymous> (/snapshot/app/node_modules/linebreak/src/linebreaker.js:161:4)
    at Module._compile (pkg/prelude/bootstrap.js:1261:22)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:710:10)
    at Module.load (internal/modules/cjs/loader.js:598:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
    at Function.Module._load (internal/modules/cjs/loader.js:529:3)

我已经阅读了 github 上与 pkg 相关的每一个问题并尝试了各种配置,但都没有帮助...

有人可以帮忙吗? 几天来一直在努力解决这个问题..

谢谢和问候!

有没有办法打包我的应用程序?

更新:他们在 github 中说,我必须在构建过程中包含 .node 文件...但我该怎么做?

最佳答案

我在使用 pkg 时遇到了很多问题。但我认为您应该将 node10-mac-x64 更改为 node14-mac-x64在 Windows 上对我有用。

而您所说的关于获取 .node 文件的事情,那仍然是一个大问题。我尝试用我的 .exe 文件复制它们,但没有成功。

关于javascript - Node - 跨平台编译 - PKG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57923664/

相关文章:

javascript - 如何通过单击按钮在全日历中添加任何事件?

javascript - 如何修复 html 输入类型 = 'number' 中超过最大值的输入?

javascript - 捕获对数组中具有 ID 的元素的点击

node.js - Nodejs 流与 Braintree?

node.js - Bluebird promise - 每个功能

node.js - WSL Debian 上的 npm 全新安装的 EACCES 问题尝试更新到最新版本

node.js - 尝试使用 npm 安装 react-native-cli 时出现未满足的依赖关系错误

JavaScript 循环性能 - 为什么将迭代器递减到 0 比递增更快

javascript - es6 箭头函数有 polyfill 吗?

javascript - 如何将 Vue 插件发布到 NPM?