NodeJS :引用 ffi-napi 后 pkg 打包 排查过程记录

2,887 阅读1分钟

寻找解决办法请去查看下面这篇

引用ffi-napi 模块,pkg 打包成功,启动却不成功

!!! 本篇是问题排查记录,字多。

排查记录

.exe程序窗口闪退

.exe程序窗口闪退, 看不到任何信息,无从下手。

liunx上运行

所以打了个liunx版的,liunx上运行能看到报错信息

解决问题

报错截图如下:

image.png

寻找原因

找到 node_modules/node-gyp-build/index.js:59 发现这个报错是自己抛出的,这样很影响排查问题。

image.png 所以将它注释。查看真正的错误原因。

注释之后的错误信息,如图: image.png

定位错误位置:

image.png

调试过程代码记录

image.png 通过对比原 ref-napi 目录 和打包后的目录

image.png image.png

发现是pkg打包会将ref-napi下打包文件不全,是prebuilds文件夹缺失。

解决办法

修改 package.json

  "pkg": {
    "scripts": [],
    "assets": [
      "node_modules/ffi-napi/**",
      "node_modules/ref-napi/**",
      "fonts/**"
    ],
    "targets": [
      "node14-win"
    ]
  },

修改 webpack.config.js

    "externals": {
        "ffi-napi": "require('ffi-napi')",
        "ref-napi": "require('ref-napi')"
    }

再次启动 启动成功!!!

image.png