@eggjs/eventbus-plugin

Usage
// plugin.js
export.teggEventbus = {
enable: true,
package: '@eggjs/eventbus-plugin',
};
Unittest
// test/fixtures/apps/event-app/app/event-module/HelloService
@ContextProto({
accessLevel: AccessLevel.PUBLIC,
})
export class HelloService {
@Inject()
private readonly eventBus: EventBus;
hello() {
this.eventBus.emit('hello', '01');
}
}
// test/fixtures/apps/event-app/app/event-module/HelloLogger
@Event('helloEgg')
export class HelloLogger {
handle(msg: string) {
console.log('hello, ', msg);
}
}
// test/event.test.ts
import assert from 'assert';
import path from 'path';
import mm from 'egg-mock';
import { HelloService } from './fixtures/apps/event-app/app/event-module/HelloService';
import { HelloLogger } from './fixtures/apps/event-app/app/event-module/HelloLogger';
describe('test/eventbus.test.ts', () => {
let app;
let ctx;
afterEach(async () => {
await app.destroyModuleContext(ctx);
mm.restore();
});
before(async () => {
app = mm.app();
await app.ready();
});
after(() => {
return app.close();
});
it('msg should work', async () => {
ctx = await app.mockModuleContext();
const helloService = await ctx.getEggObject(HelloService);
let msg: string | undefined;
// helloLogger is in child context, should mock the prototype
mm(HelloLogger.prototype, 'handle', (m) => {
msg = m;
});
const eventWaiter = await app.getEventWaiter();
const helloEvent = eventWaiter.await('hello');
helloService.hello();
await helloEvent;
assert(msg === '01');
});
});
关于 @eggjs/eventbus-plugin 的常见问题
@eggjs/eventbus-plugin 是什么?
tegg event plugin
如何安装 @eggjs/eventbus-plugin?
在项目目录运行 npm install @eggjs/eventbus-plugin,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:egg(4.2.0)、@eggjs/tegg-plugin(4.1.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。
@eggjs/eventbus-plugin 支持 TypeScript 吗?
支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。
@eggjs/eventbus-plugin 支持 ESM 还是 CommonJS?
以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。
@eggjs/eventbus-plugin 需要什么版本的 Node.js?
package.json 的 engines 字段要求 Node.js >=22.18.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。
@eggjs/eventbus-plugin 可以商用吗?
@eggjs/eventbus-plugin 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。
@eggjs/eventbus-plugin 的下载量有多少?
根据 npm 官方下载统计,@eggjs/eventbus-plugin 在 2026/10/13 – 2026/11/11 这 30 天内被下载 3,832 次,日均约 128 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。
@eggjs/eventbus-plugin 还在维护吗?
最新版本 4.1.0 发布于 2026/10/07(1 个月前);至今共发布 39 个版本,其中过去 12 个月发布了 33 个;首次发布于 2025/10/24。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。