首页 > 编程语言 >pkg 打包node服务端 填坑记录!!

pkg 打包node服务端 填坑记录!!

时间:2022-12-22 16:58:37浏览次数:51  
标签:node 打包 js 填坑 pkg https com 服务端

产品服务端使用nodejs开发,部署时不能将代码部署到服务器,所以查到可用pkg将node服务端打包成exe,事先已经查了不少资料,本以为是一个很简单的事情,结果折腾了一天,才算搞定。 现将打包过程以及遇到的问题记录如下,希望可以帮助到后面的人。 填坑记录!!!!   打包流程记录: 1. 安装pkg npm install -g pkg
2. 修改package.json,添加pkg配置和命令 "scripts": {     .....,     "pkg": "pkg . --out-path=dist/"   },   "bin": "./index.js",   "pkg": {     "scripts": "build/**/*.js",     "assets": "views/**/*",     "targets": [       "node14"     ],     "outputPath": "dist"   },
3. 执行命令 npm run pkg

 

备注: 不建议用pkg -t win index.js方法,坑太多,上面的package.json相对还是简单的。
----------------------------------------------------------------------------------------------------------------------------------------

// 遇到的问题总结 1. pkg与node版本不一致问题 当我们执行pkg -t win index.js 命令进行打包时会收到以下error提示 PS G:\pkg> pkg -t win index.js > [email protected] > Error! No available node version satisfies 'node13'
解决方法:将Node.js项目打包为一个可执行文件 https://swmlee.com/2019/12/18/technicalessays/pack-nodejs-project/ 注意 pkg 支持的 nodejs 版本问题 如果安装的 pkg 版本,和实际需要打包的 nodejs 项目的版本不同,则可能会出现类似pkg error no available node version satisfies 'node 9'的报错信息。 经查询https://github.com/vercel/pkg-fetch/blob/main/patches/patches.json {   "v18.12.1": ["node.v18.12.1.cpp.patch"],   "v16.18.1": ["node.v16.18.1.cpp.patch"],   "v14.21.1": ["node.v14.21.1.cpp.patch"],   "v12.22.11": ["node.v12.22.11.cpp.patch"],   "v10.24.1": ["node.v10.24.1.cpp.patch"],   "v8.17.0": ["node.v8.17.0.cpp.patch"] } 需要将node升级到以上版本,我是将node 升级到 v14.21.1, 升级方法如下: node v14.21.1下载地址 https://registry.npmmirror.com/binary.html?path=node/latest-v14.x/
2. 无法加载文件 C:\Users\*\AppData\Roaming\npm\pkg.ps1,因为在此系统上禁止运行脚本。 pkg : 无法加载文件 C:\Users\admin\AppData\Roaming\npm\pkg.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/ go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。 所在位置 行:1 字符: 1
解决方法: https://blog.csdn.net/weixin_39729729/article/details/119766261
3. 执行exe时提示需要手动安装mysql2包 PS G:\pkg> .\server.exe pkg/prelude/bootstrap.js:1876       throw error;       ^
Error: Please install mysql2 package manually
解决方法: 看node_modules目录下是否有sequelize和mysql2 npm install --save sequelize npm install mysql2 --save
4. 执行exe时提示 不能创建目录。 PS G:\pkg> .\server.exe pkg/prelude/bootstrap.js:1876       throw error;       ^
Error: Cannot mkdir in a snapshot. Try mountpoints instead. at mkdirFailInSnapshot (pkg/prelude/bootstrap.js:1636:7)     at Object.mkdirSync (pkg/prelude/bootstrap.js:1648:12)     at mkdir (C:\snapshot\pkg\node_modules\streamroller\lib\RollingFileWriteStream.js:270:19) 解决方法:通过代码走查 nodejs后端只有log4js(日志打印)中用到了目录创建,将其卸载 npm uninstall log4js -s 注释掉 所有使用 logUtil 的地方, 删除
重新打包 npm run pkg , 再次执行 .\****.exe, 通过。
5. 缓存里缺少相应的二进制文件fetched-v16.14.2-win-x64 $ pkg -t win server.js > [email protected] > Fetching base Node.js binaries to PKG_CACHE_PATH   fetched-v16.14.2-win-x64            [                    ] 0%> Not found in remote cache:   {"tag":"v3.3","name":"node-v16.14.2-win-x64"} > Building base binary from source:
解决方案: https://segmentfault.com/a/1190000041958374?sort=votes   参考资料: pkg打包官网教程 https://www.npmjs.com/package/pkg
使用 pkg 打包 node服务端 项目 https://blog.csdn.net/u014675852/article/details/115915179
将Node.js项目打包为一个可执行文件 https://swmlee.com/2019/12/18/technicalessays/pack-nodejs-project/
一处打包,到处运行,用pkg打包nodejs应用! https://segmentfault.com/a/1190000041958374?sort=votes
将Node.js项目打包为一个可执行文件 https://swmlee.com/2019/12/18/technicalessays/pack-nodejs-project/
解决问题:无法加载文件 C:\Users\*\AppData\Roaming\npm\pkg.ps1,因为在此系统上禁止运行脚本。 https://blog.csdn.net/weixin_39729729/article/details/119766261
node v14.21.1下载地址 https://registry.npmmirror.com/binary.html?path=node/latest-v14.x/

标签:node,打包,js,填坑,pkg,https,com,服务端
From: https://www.cnblogs.com/mazhenyu/p/16999104.html

相关文章

  • Node.js(笔记03) - path 路径模块
    path 路径模块path 模块是Node.js 官方提供的、用来处理路径的模块。它提供了一系列方法和属性,来满足用户对路径的处理需求。 官方文档:​​https://nodejs.org/dist/la......
  • windows 环境npm或yarn安装 node-sass失败的问题
    先说结论是,使用npm最后成功,没有去专门下载安装python27packjson.json我没有删除,使用降node版本的方法解决了,但不知道是不是最优1、中间最主要操作是:使用nvm管理node版......
  • 【实用主义】如何用nodejs自动定时发送邮件提醒?
    需要先安装插件 npminstallNodemailer--saveindex.js global.SG={nodemailer:require("nodemailer")//发送邮件需要的服务};sg.js //发送邮件参数:收件人(支持群......
  • node.js创建WebSocket服务,并使用原生js ES6完成对WebSocket数据交互
     注意,前情提示:本代码基于《Node.js(nodejs)对本地JSON文件进行增、删、改、查操作(轻车熟路)》首先安装cnpminodejs-websocket在/api/demo/文件夹下面创建websocket.js  ......
  • Node.js复制/删除服务器端文件到指定目录文件夹下,并且预判是否存在该目录,如果没有,则递
      注意,前情提示:本代码基于《Node.js(nodejs)对本地JSON文件进行增、删、改、查操作(轻车熟路)》 在/api/demo/文件夹下面创建copyFileOrFolder.js和deleteFileOrFolder.jsc......
  • nginx 配置服务端地址
    server{listen8099;server_namelianghj.top;#charsetkoi8-r;#access_loglogs/host.access.logmain;......
  • Node学习笔记
    Node.js学习笔记node.js简介:什么是Node.js?Node.js是一个基于ChromeV8引擎的javascript运行环境注意:浏览器是js的前端运行环境Node.js是js的后端运行环境Node.......
  • Node.js(笔记02) - fs文件系统模块
    fs 文件系统模块fs 模块是 Node.js 官方提供的,用来操作文件的模块。提供了一系列的方法和属性,用来满足用户对文件的操作需求;例如:fs.readFile() 方法,用来读取指定文件中......
  • 查看系统的服务端口号
    查看系统的服务端口号 1netstat-tnlp  netstat 的关于所配置的网络接口,诸如以下的流量命令显示信息:与所有sockets关联的任何协议控制块的地址以及所有sockets的......
  • Node.js(笔记01) - 初识Node.js
    本次学习目录:1)初识 Node.js2)fs 文件系统模块3)path 路径模块4)http 模块初识Node.js 回顾与思考1)前端需要掌握的基本技术:HTML、CSS和JAVASCRIPT2)浏览器中的 Javascri......