Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Node - Cross Plattform compilation - PKG

I am currently trying to compile a node app for macos using pkg:

https://github.com/zeit/pkg

First of all my setup:

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

My first try:

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

Resulted in:

> [email protected]
> Error! No available node version satisfies 'node11'

Thats why i switched to:

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

Result:

> [email protected]
> 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

But the executable has been generated, so i tried to run it:

./app-mac

Which resulted in the total disaster:

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)

I already read every single issue on github related to pkg and tried various configurations, but none of them helped...

Can anybody please help? Trying to solve this issue for days now..

Thanks and greetings!

Is there no way i can package my application?

Update: In github they say, i have to include the .node files in the build process... but how do i do that?

like image 292
Creative crypter Avatar asked Oct 31 '25 02:10

Creative crypter


1 Answers

I am too facing many problems using pkg. But I think you should change that node10-mac-x64 to node14-mac-x64. That worked for me on Windows.

And the thing you were talking about getting the .node files, that's still a big problem. I tried to copy those with my .exe file but it didn't work.

like image 146
Usman Sabuwala Avatar answered Nov 01 '25 17:11

Usman Sabuwala