1.安装node.js

我这里安装的是14.16.0(建议版本14以上)

2.安装pkg包

3.编写一段后台程序

·目录结构如下

·package.json中内容

{"name": "express-pkg","version": "1.0.0","description": "","main": "index.js","bin": "./server.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1","pkg": "pkg . -t node14-win-x64 --out-path=dist/"},"keywords": [],"author": "","license": "ISC","dependencies": {"express": "^4.18.2"}
}

注:“bin”为程序入口文件,打包后双击二进制文件即执行node server.js。“pkg”为打包命令,后续可直接在控制台输入npm run pkg。其中,pkg配置中 node14-win-x64 表示我的node版本为14,打包为win x64系统的二进制文件。

·server.js中内容

const express  = require('express')
const app = express()
app.listen(8012,()=>{console.log('服务 8012 启动了')
})

4.执行打包程序

·控制台报错

PS C:\Users\A\Desktop\express-pkg> npm run pkg> express-pkg@1.0.0 pkg C:\Users\A\Desktop\express-pkg
> pkg . -t node14-win-x64 --out-path=dist/> pkg@5.8.0
> Fetching base Node.js binaries to PKG_CACHE_PATHfetched-v14.20.0-win-x64            [                    ] 0%> Not found in remote cache:{"tag":"v3.4","name":"node-v14.20.0-win-x64"}
> Building base binary from source:built-v14.20.0-win-x64
> Fetching Node.js source archive from nodejs.org...
> Error! AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:(0, assert_1.default)(!this.bar)at Log.enableProgress (C:\Program Files\nodejs\node_modules\pkg\node_modules\pkg-fetch\lib-es5\log.js:64:30)at C:\Program Files\nodejs\node_modules\pkg\node_modules\pkg-fetch\lib-es5\utils.js:58:31at step (C:\Program Files\nodejs\node_modules\pkg\node_modules\pkg-fetch\lib-es5\utils.js:33:23)at Object.next (C:\Program Files\nodejs\node_modules\pkg\node_modules\pkg-fetch\lib-es5\utils.js:14:53)at C:\Program Files\nodejs\node_modules\pkg\node_modules\pkg-fetch\lib-es5\utils.js:8:71at new Promise (<anonymous>)at downloadUrl (C:\Program Files\nodejs\node_modules\pkg\node_modules\pkg-fetch\lib-es5\utils.js:53:12)at C:\Program Files\nodejs\node_modules\pkg\node_modules\pkg-fetch\lib-es5\build.js:142:66at step (C:\Program Files\nodejs\node_modules\pkg\node_modules\pkg-fetch\lib-es5\build.js:44:23)
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! express-pkg@1.0.0 pkg: `pkg . -t node14-win-x64 --out-path=dist/`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the express-pkg@1.0.0 pkg script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\A\AppData\Roaming\npm-cache\_logs\2023-01-31T00_47_58_116Z-debug.log

解决方法,找到pkg缓存目录,并下载对应二进制文件,将文件拷贝到对应目录下。文件下载地址

https://github.com/vercel/pkg-fetch/releases 。根据报错可知,这里需要下载 fetched-v14.20.0-win-x64,我这里下载node-v14.20.0-win-x64,下载完成后将文件名更改即可。

注:我这里的缓存地址为C:\Users\A\.pkg-cache\v3.4。v3.4在控制台报错的日志里{"tag":"v3.4","name":"node-v14.20.0-win-x64"},tag即为。

5.继续执行打包程序

·控制台发出警告

> Warning Cannot resolve 'path.join(__dirname, 'package.json')'C:\Users\A\Desktop\边缘控制器\server\iscada.jsDynamic require may fail at run time, because the requested fileis unknown at compilation time and not included into executable.Use a string literal as an argument for 'require', or leave itas is and specify the resolved file name in 'scripts' option.

原因:这是由于项目用了__dirname拼接变量的形式。

解决方法:在packge.json中增加pkg配置,配置如下。我这里只是随便写了一下,具体用的到的地方再根据实际写。

"pkg": {"assets": ["public/**/*","views/**/*","./_appdata/*.js","./*.js","./api/*.js","./api/**/*.js","./runtime/**/*.js","./runtime/**/**/*.js","./runtime/*.js","./node_modules/**/*.js"]
},

6.继续打包

·打包成功

pkg打包node服务为双击可执行二进制文件Windows x64系统相关推荐

  1. 使用 pkg 打包 node服务端 项目

    前言 最近自己写了一个nodejs+mysql+express 的项目,想着如果项目部署的话还要再安装 node 环境什么的,肯定太麻烦,于是就想有没有像webpack 那样打包项目的插件,于是了解到 ...

  2. pkg之打包node服务

    如何将用Node搭建的服务,在没有外网的情况下简单部署?通过查找自己和实践,找到了适合的技术--pkg,能将服务打包成一个exe文件,方便部署,既能保证代码的安全性,又能让使用者一键操作. 一.通过查 ...

  3. node pkg 打包一个为一个可执行程序(linux、windows、mac)

    概要:如果将node项目打包为一个可执行的文件,那么对于部署.安装来说,以及源码的保护性都有很多的好处 1.全局安装pkg库,也可以不局部安装,全局安装为了方便(npm install pkg -g) ...

  4. videojs暂停时显示大按钮_服务失败时进行故障恢复,Windows 7系统如何打开服务管理程序...

    今天介绍当服务失败时进行故障恢复,Windows 7操作系统如何打开服务管理程序.在Windows 7操作系统中,小伙伴们可以使用"服务"程序窗口管理本地或远程计算机上运行的服务, ...

  5. 打包node服务端_如何基于NodeJS从零构建线上自动化打包工作流?

    前言 NodeJS在前端领域正扮演着越越重要的地位,它不仅可以让前端工作者使用javascript编写后端代码,还能方便地搭建响应速度快.易于扩展的网络应用.Node.js 使用事件驱动,非阻塞I/O ...

  6. 宝塔部署node项目_SFF一站式node服务管理平台实践

    导语 本文阐述了基于Serverless搭建一站式node服务管理平台过程中,在开发框架.日志.监控.部署等方面遇到的问题及技术方案. 背景 Serverless是一种无服务器架构,它的弹性伸缩,按需 ...

  7. js 连接mysql_搭建node服务(二):操作MySQL

    为了进行复杂信息的存储和查询,服务端系统往往需要数据库操作.数据库分为关系型数据库和非关系型数据库,关系型数据库有MySQL.Oracle.SQL Server等,非关系型数据库有Redis(常用来做 ...

  8. 「服务端」node服务的监控预警系统架构

    本文由尚妆前端开发工程师欲休撰写 本文发表于github尚妆博客,欢迎订阅! 需求背景 目前node端的服务逐渐成熟,在不少公司内部也开始承担业务处理或者视图渲染工作.不同于个人开发的简单服务器,企业 ...

  9. Node服务一键离线部署

    背景说明 项目测试通过,到了上线部署阶段.部署的机器安全限制比较严格,不允许访问外网.此外,没有对外网开放ssh服务,无法通过ssh远程操作. 针对上面提到的两条限制条件,通过下面方式解决: 无法访问 ...

最新文章

  1. 用python做乘法口诀表_使用python写乘法口诀表
  2. 模型训练速度过慢,GPU利用率低
  3. oracle 导库时日志满了,oracle rac 11g 日志占满系统盘导致数据库down掉
  4. mysql 服务器 utf8_MySQL编码设置方法 MySQL编码为utf8设置方法
  5. MySQL管理之 MyISAM和InnoDB存储引擎简单对比
  6. P1019 单词接龙
  7. Java解析XML并自动写入Excel
  8. 深度内幕丨揭秘积分墙新颖反作弊
  9. 【scratch音乐课】天空之城:音符与节拍、消息与链表
  10. 解题报告 之 HDU5336 XYZ and Drops
  11. 统计一TXT文档中单词出现频率,输出频率最高的10个单词
  12. openjudge 1.6.2 陶陶摘苹果
  13. JVM内存结构和垃圾回收机制
  14. C程序设计语言第二版·新版,C程序设计语言(第2版·新版) PDF扫描版[19MB]
  15. 艾德莱斯绸:“千年时尚”托起新产业
  16. 电脑误删除的文件怎么恢复
  17. Karatsuba-Ofman乘法器
  18. jqGrid可编辑模式下 单元格内容不能复制处理
  19. cocos2dx 更改帧频
  20. 程序员找工作有哪些渠道?

热门文章

  1. 迁移到Microsoft Exchange和Exchange Online的真相
  2. python色卡_Python可视化|08-Palettable库中颜色条Colormap(四)
  3. 如何在mac里安装vmware,在mac里安装虚拟机,如何注册vmware
  4. t6服务器型号,T6服务器名配置
  5. 在 Nuxt.js 和 Vue.js 项目中引入第三方字体或艺术字
  6. 前端练手案例之日历(原生)一
  7. 服务器swap占用过高,主机swap区使用率过高
  8. LayaAir2.13新特性:新增VR相关功能、渐变环境光、3D自定义分辨率、新的渲染命令、新的动画插值方式、新的粒子功能等等...
  9. linux 安装防病毒软件,04Linux环境下Norton防病毒软件安装和使用.doc
  10. 解决Win10系统EFI引导出错,导致无法开机的问题