pkg打包node项目

文章目录

    • 一、安装pkg
    • 二、打包命令
    • 三、package.json文件配置
    • 三、报错解决
        • 1.未下载打包需要的二进制缓存文件
        • 2.下载完的文件存放的位置
        • 3.下载文件的重命名
    • 四、下载
    • 五、可能遇到问题补充
    • 六、总结

        这次项目事前后端分离的一个项目,我们需要用node去包装后端给我们的接口,最后我们还需要把前端的代码和后端的代码一起部署到服务器上去访问,而后端需要用到linux二进制文件,这样就需要我们使用pkg对项目进行打包,这次就来分享一下打包的一些配置,准备工作以及可能遇到的问题解决方案。

一、安装pkg

      首先,我们使用的是pkg打包工具,所以我们要下载安装pkg,为了方便,这里直接采用全局安装

npm i pkg -g

二、打包命令

pkg .

    在项目的根目录中打开cmd输入上述命令,它会自动找到该目录下的package.json文件根据里边的内容进行打包

三、package.json文件配置

      打包是根据package.json文件来打包的,这样的话,我们需要手动配置一下package.json文件,需要加上这些东西

"bin": {
    "credit-recognition-system": "server.js"//指定入口文件,就是那个启动服务器的js文件,我这里叫server.js
  },
  "pkg": {
    "scripts": [
      "./static/js/*.js"//因为pkg不会自动打包js文件,这里配置的是存放js的目录
    ],
    "targets": [//指定最终打包的类型,pkg是可以打包为win包和linux包以及moc包的,具体的需要看服务器是什么类型的
      "node14-win-x64",//这里指定的是win包
      "node14-linux-x64"//这里指定的是linux包
    ],
    "assets": [
      "./static",//指定存放静态资源的文件夹
      "./views"//指定存放html的文件夹
    ]
  },

      上边的文件都指定完了,但是大家可能会好奇为什么没有指定存放路由文件的文件夹和node_moudels文件呢?
那是因为我们是以server.js(启动服务器的js)作为入口文件,里边有引入路由文件的操作,这样就在这个入口文件里指定了。而我们依赖的第三方包,在package.json中就有指定。

三、报错解决

      在配置这些文件之后我们就可以进行打包之后的最后一个操作了就是去官网去下载打包二进制文件所需要的二进制缓存文件官网,这个是github上的网站,比较慢,可以挂一个加速器。

1.未下载打包需要的二进制缓存文件

pkg打包node项目_第1张图片
可以看到我上边我画红的地方,前边的tag指定的v3.4是我们要把官网下载的二进制缓存文件存放的文件夹,后边是我们需要下载的二进制缓存文件的版本
pkg打包node项目_第2张图片
上边红箭头指定的是我们这次打包需要下载的

2.下载完的文件存放的位置

      我们可以在我们电脑的C盘找到Users==>用户名==>.pkg-cache下看看有没有v3.4文件夹,没有的话新建一个,把刚刚下载的文件都存放到这个文件夹里边

3.下载文件的重命名

      我们需要把刚刚下载的文件进行重命名,只需把刚刚下载的文件名前边的node修改为fetched就可以了。

四、下载

      这时我们再运行刚刚那个命令
pkg打包node项目_第3张图片
就可以看到这个,这样的话就代表我们成功了,只需等一会就可以再我们能够目录下看到多出两个文件
在这里插入图片描述
这样我们就打包好了,我们可以点击exe程序进行运行,会看到弹出一个命令看,里边和你平常运行node项目一样。

五、可能遇到问题补充

      我们打包之后的文件正常情况下是可以再任意的电脑上任意的文件夹中运行的,但是可能会出现一种问题就是我把这个exe文件移出打包的能那个文件夹,点击运行,路由文件的接口正常访问,但是我们的html文件不能打开了,这是因为文件路径的问题,我们只需再入口文件中加上

app.set("views", "views");

重新打包就可以了

六、总结

      对于打包这个问题它并不是难点,但是对于我们这种初学者来说,根本就不知道应该怎么做,百度出来的结果也是一头雾水,五花八门,最终打包出来之后也并不知道自己打包的对不对。遇到这种情况,一定不要慌张,这种东西不是难,而是我们不知道而已。实在不行就去问大佬,我觉得改bug就和一句话很像,就是久病成良医,遇见的bug多了自然就知道从哪里下手了。
      下周继续加油咯!!!

你可能感兴趣的:(总结,服务器,javascript,前端)