NodePkg

nodepkg是nodejs的一个打包程序,可以把nodejs项目打包成exe可执行文件。支持window,也支持FreeBSD、linux、macos、arm系统,项目地址=>Pkg,目前有16k+star

遇到的问题

这玩意好是真的好,但是也有很多缺点和坑,总结一下。

1.安装劝退,前面说了,pkg支持很多平台,但是都要下载相关的依赖,原本是在你输出对应平台的参数后自动帮你下载,但是很多时候,妈的挂了梯子都下不下来,还需要自己手动下。参考文章

> pkg@4.4.0
> Fetching base Node.js binaries to PKG_CACHE_PATH
  fetched-v10.15.3-win-x64     [                    ] 0%
> Error! connect ETIMEDOUT 13.229.188.59:443
> Asset not found by direct link:
  {"tag":"v2.6","name":"uploaded-v2.6-node-v10.15.3-win-x64"}

2.打包体积太大,随随便便就是5-60m的体积,隔壁python也是的。

3.不打包本机插件(.node),这是我刚刚遇到的问题,我做了一个工具给我的同事,功能比较简单,就是分析excel表里的数据,然后转换成sql语句插入到数据库里。在我本机上跑的好好的,我为了保证runTime的正确性,我还用了TypeScript,然后到了用户那边一运行就报错。我吐了60m的exe说报错就报错,这么大怎么一点也不中用啊??:weary:

下面就是报错信息了,找不到node_sqlite3.node,这个.node是sqlite3的本机插件,但是pkg打包的时候是不会把这个本机插件打包进去的,所以,在其他设备上运行就会报错,最好的解决方案就是把这个文件拷贝到打包后的exe相同目录,一起运行。解决方案,官放文档说明

Error: Cannot find module 'D:\snapshot\registerInsert\node_modules\sqlite3\lib\binding\napi-v3-win32-x64\node_sqlite3.node'
Require stack:
- D:\snapshot\registerInsert\node_modules\sqlite3\lib\sqlite3-binding.js
- D:\snapshot\registerInsert\node_modules\sqlite3\lib\sqlite3.js
- D:\snapshot\registerInsert\src\dist\index.js
1)

总结

总的来说,pkg真的是个好工具,但是在使用它的时候需要注意以下几点:

1.打包好的exe不要只在本机测试,要多终端测试,哥们就是因为之前打包都只是本机测试,天真的认为Pkg是把所有的依赖全部打包了,无需操心兼容性和以来,然后今天翻车了。

2.即使是再小的项目也要构建完备的log系统,能做到仅看log就能还原程序运行就算优秀。

3.用TS来保证工程的稳定性和质量

4.使用nodejs来开发应用是需要勇气和智慧的,只有勇气可不行。

0 / 10
0 / 30