返回
NodeJS: 引用 ffi-napi 后 pkg 打包排查过程
前端
2023-10-30 05:25:17
NodeJS: 引用 ffi-napi 后 pkg 打包,排查过程记录
引言
最近在项目中尝试使用 ffi-napi 模块来访问原生库,但在使用 pkg 打包后遇到了各种问题。本文将记录排查过程和解决办法,以帮助遇到类似问题的开发者。
问题 1: Windows 平台下 .exe 程序启动闪退
症状: 在 Windows 平台上,用 pkg 打包后生成的 .exe 程序启动后立即闪退,没有留下任何错误信息。
解决办法: 检查 pkg 的 executable
选项。默认情况下,pkg 会将输出的 .exe 文件设为 Windows 子系统 2(WSL2)可执行文件,但这可能会导致兼容性问题。将 executable
选项设置为 win32
即可解决此问题。
pkg . --output-path ./dist/win --target win32 --out-path ./dist/win
问题 2: Linux 平台下启动失败
症状: 在 Linux 平台上,用 pkg 打包后生成的二进制文件无法启动,并提示以下错误:
./dist/linux: error while loading shared libraries: libffi.so.6: cannot open shared object file: No such file or directory
解决办法: 确保已安装 libffi 库。ffi-napi 依赖于 libffi,因此在打包前必须安装该库。
# Ubuntu/Debian
sudo apt-get install libffi-dev
# CentOS/Red Hat
sudo yum install libffi-devel
问题 3: pkg 打包后缺少符号
症状: 在 Windows 平台上,用 pkg 打包后生成的 .exe 程序缺少某些符号,导致在启动时崩溃。
解决办法: 将 --symbols
选项添加到 pkg 命令中。此选项将生成包含符号信息的调试文件,可以帮助调试崩溃问题。
pkg . --output-path ./dist/win --target win32 --out-path ./dist/win --symbols
结论
通过记录排查过程,本文提供了解决使用 ffi-napi 模块和 pkg 打包时常见问题的具体步骤。希望这些解决办法能够帮助开发者解决类似的问题,并顺利完成他们的项目。