遇到的问题是:用node.js开发服务器,用pkg打包成exe后,打开exe闪一下自动退出,不知道什么原因,经过搜索后一步步的解决问题。
1、分析是什么原因导致的自动退出,我们打开一个cmd窗口,进入到 exe的目录,在cmd下直接运行 ***.exe,就可以看到exe闪退的原因。如下图:
Error: No native build was found for platform=win32 arch=x64 runtime=node abi=108 uv=1 libc=glibc node=18.5.0
loaded from: C:snapshotjson-to-escnode_modulesusb
这个错误的提示是:表明在当前的环境下,usb 模块没有找到对应的原生构建版本。
2、问题的解决办法
因为运行时是正常的,在查找原因期间也多次安装过不同版本的node.js,也重新编辑过usb模块,更是了解到npm install和cnpm install安装不同的模块,然后打包可能会有问题。经过多方查阅资料,在某篇技术文章里找到是因为usb这个模块没有导入进去,结果在 package.json 配置里添加上,最后打包成功了。package.json部分内容如下,其中assets是引用的usb模块资源,targets是表示是用node18版本来打包,outputPath是表示打包生成的目录
{
"name": "JsonPrinter",
"version": "1.0.0",
"main": "index.js",
"bin": "./index.js",
"pkg": {
"assets": "node_modules/usb/prebuilds/win32-x64/*.node",
"targets": [
"node18"
],
"outputPath": "dist"
},
"scripts": {
"start": "node index.js",
"pkg": "pkg . --public --public-packages=* --out-path=dist/ --debug"
},
"dependencies": {
}
}