使用pkg,你可以将Node.js项目打包成可执行文件,甚至可以在没有安装Node.js的设备上运行。实验环境操作系统:windowsnode版本:16.14.2运行过程下载PKG我们可以选择全局安装,在任意目录下执行:$npminstall-gpkg打包程序先写一个简单的程序,比如server.jscontentconstexpress=require('express');constapp=express();app.get('/',(req,res)=>{res.send('HelloWorld!');});app.listen(3000,()=>{console.log('Expresswebapponlocalhost:3000');});进入nodejs项目根目录,执行以下命令$pkgserver.js第一次报错,这个时候会报错$pkgserver.js>pkg@5.6.0>Targetsnotspecified。假设:node16-linux-x64、node16-macos-x64、node16-win-x64>将基本Node.js二进制文件提取到PKG_CACHE_PATHfetched-v16.14.2-linux-x64[]0%>在远程缓存中找不到:{"tag":"v3.3","name":"node-v16.14.2-linux-x64"}>从源代码构建基础二进制文件:built-v16.14.2-linux-x64>错误!这里不能为'linux'构建,只能为'win'大意是当前环境只支持为windows系统编译的可执行文件,即win调整命令为:$pkg-twinserver.js其中其中,-twin相当于--targetswin,也就是说只编译windows的文件。编译时报第二个错误:$pkg-twinserver.js>pkg@5.6.0>FetchingbaseNode.jsbinariestoPKG_CACHE_PATHfetched-v16.14.2-win-x64[]0%>Notfoundinremotecache:{"tag":"v3.3","name":"node-v16.14.2-win-x64"}>从源代码构建基础二进制文件:built-v16.14.2-win-x64>获取Node.js源代码来自nodejs.org的存档...>错误!AssertionError[ERR_ASSERTION]:Theexpressionevaluatedtoafalsyvalue:大意是缓存中缺少对应的二进制文件fetched-v16.14.2-win-x64,我们只需要下载到对应的文件中即可对应的缓存目录。1、到官网下载对应版本文件。比如我的是node-v16.14.2-win-x64官网地址:https://github.com/vercel/pkg...2.下载上一步中的文件node-v16.14.2-win-x64重命名为fetched-v16.14.2-win-x64,放在当前用户的缓存目录下。比如我的缓存目录是C:\Users\MangoDower.pkg-cache,fetched标签就成了最终目录。参考报错信息,可以得到tag为v3.3{"tag":"v3.3","name":"node-v16.14.2-win-x64"}我们可以得到最终的父目录为C:\Users\MangoDower.pkg-cache\v3.3,所以最终文件地址为C:\Users\MangoDower.pkg-cache\v3.3\fetched-v16.14.2-win-x64再次编译,成功!$pkg-twinserver.js>pkg@5.6.0
