diff --git a/src/__tests__/index.node.js b/src/__tests__/index.node.js index caf1178d..7b3442a4 100644 --- a/src/__tests__/index.node.js +++ b/src/__tests__/index.node.js @@ -608,3 +608,22 @@ test('enable proxy flag', async t => { t.equal(app._app.proxy, true, 'fusion proxy should be true by default'); t.end(); }); + +test('registering a plugin as a middleware should throw', async t => { + const simplePlugin = createPlugin({ + middleware: () => { + return (ctx, next) => { + return next(); + }; + }, + }); + + const app = new BaseApp('el', el => el); + try { + // $FlowFixMe + app.middleware(simplePlugin); + } catch (e) { + t.equals(e.message, 'Cannot register plugin as a middleware'); + t.end(); + } +}); diff --git a/src/base-app.js b/src/base-app.js index 3f3e990b..ff878507 100644 --- a/src/base-app.js +++ b/src/base-app.js @@ -112,8 +112,12 @@ class FusionApp { } middleware(deps: *, middleware: *) { if (middleware === undefined) { + if (deps.__plugin__ === true) { + throw new Error('Cannot register plugin as a middleware'); + } middleware = () => deps; } + this.register(createPlugin({deps, middleware})); } enhance(token: Token, enhancer: Function) {