编程 PKG 打包教程 前言 背景 最近做了一个 Egg.js 的项目,有为客户私有化部署但是需要保护源代码的需求。之前没有接触过 Node.js 项目打包的,只是用过 Webpack 打包的前端的东西,更别说后端的项目打包了。搜索了一下,发现有不少方案,但是都只是解决了其中一部分问题,比如代码混淆。最后发现一个叫做 Pkg的方案应该能够满足需求。 目标 基础目标 将 Egg.js 项目打包成不包含源文件的可执行文件 进阶目标 确保包含了项目中所有依赖的文件 确保打包结果不包含源代码
编程 在 Egg.js 项目中跑临时脚本 前言 背景 当前在 egg.js 项目中经常会遇到要运行一段临时脚本,修补之前的数据错误之类的临时需求。但是 egg.js 项目和其他的 node 框架不同,只能启动整个项目,而无法单独运行一个文件。 环境 Egg.js:2.26.x; 解决方案 查了一些资料以后发现,可以利用 Egg.js 官方库中的 egg-mock。这个库的用途本来是用来做单元测试的,正好可以利用这个特点跑一下我们要执行的脚本。
编程 Apollo GraphQL 之上传文件 前言 背景 在 Web 应用中,上传文件是非常常见的需求,而在使用 GraphQL 以后,应该如何实现上传文件的功能呢。 环境 apollo-server:2.x; Altair:2.4.6; 后端 Apollo 直接提供了上传文件的功能,具体用法参见官方文档。 后端在处理时需要注意两个地方: 根据文档获取上传文件的文件名和 readable stream; 为了避免内存溢出,不用全部读取到内存,然后再保存文件,而是将
编程 Egg 应用的终止过程 前言 背景 我当前在做的项目是用 Egg.js 开发的,其中涉及到循环消费队列消息的逻辑,但是有一个担心,就是在 worker 进程终止的时候消息处理到一半,既完成了业务逻辑,但又没有 ACK,导致消息相应超时,后面还会再消费到,可能会导致各种各样无法预料的问题。 环境 Node.js:12.x; Egg.js:2.26.x; 目标 确保在 Egg
编程 Node.js 和 Egg.js 项目远程调试 前言 背景 在开发 Node.js 项目过程中,为了更加快速、方便的定位问题,我们一般都会在开发过程中使用本地调试当前的项目。但是项目如果已经部署到远程的服务器以后,再出现问题,就很难定位问题所在了。因此对远程服务器当前运行的项目进行调试也是一个很现实和重要的需求。 本文假设读者都会使用 Node.js 的本地调试方法和工具,因此重点放在已经运行在远程机器的 Node.js 项目调试方法上。如果不了解本地调试内容,请先了解相关内容后再阅读本文。 环境 Node.js:12.x; Egg.js:
编程 锁版本 - Node.js 开发中的血泪教训 在 Node.js 项目开发中会遇到依赖版本不一致而引发的项目不能正常运行的问题。要解决该问题,首先要了解什么是语义化版本号。另外需要了解在 Node.js 项目中是如何管理依赖的版本号。最后可以通过 package-lock.json 和 yarn.lock 文件解决锁版本的问题。