前言

背景

当前在 egg.js 项目中经常会遇到要运行一段临时脚本,修补之前的数据错误之类的临时需求。但是 egg.js 项目和其他的 node 框架不同,只能启动整个项目,而无法单独运行一个文件。

环境

Egg.js:2.26.x;

解决方案

查了一些资料以后发现,可以利用 Egg.js 官方库中的 egg-mock。这个库的用途本来是用来做单元测试的,正好可以利用这个特点跑一下我们要执行的脚本。

'use strict';

(async () => {
  const mm = require('egg-mock');
  const app = mm.app({
    baseDir: __dirname,
  });
  await app.ready();
  
  // 将具体的业务逻辑写在下面
  console.log(app);
  const ctx = app.mockContext();
  console.log(await ctx.model.Channel.findAll());
})();