node-webot / co-wechat

Wechat for Koa
427 stars 91 forks source link

作者你好 #33

Closed liangtongzhuo closed 6 years ago

liangtongzhuo commented 7 years ago

非常感谢你开源这个插件,我有一个问题如下

router.use('/aaa',wechat(config).middleware(async (message, ctx) => {
  return '啊啊啊啊';
}))

为什么,这个路由不走呢?

JacksonTian commented 7 years ago

路由用对了吗。

liangtongzhuo commented 7 years ago

index.js

const Koa = require('koa');
const app = new Koa();
app.use(require('./controller/reply_controller').routes());
module.exports = app;

controller/reply_controller.js

const Router = require('koa-router');
const wechat = require('co-wechat');

const config = {
  token: process.env.wechat_token,
  appid: process.env.wechat_appid,
  encodingAESKey: process.env.wechat_encodingAESKey
};

const router = new Router();
router.use(wechat(config).middleware(async (message, ctx) => {
  return 'aaa';
}));

module.exports = router;
JacksonTian commented 7 years ago
router.use('/path', wechat(config).middleware(async (message, ctx) => {
  return 'aaa';
}));
liangtongzhuo commented 7 years ago

是的,只要外面包裹 router.use(),中间件就不走的。 为了测试我放在根路径

router.use( wechat(config).middleware(async (message, ctx) => {
  return 'aaa';
}));
router.use('/', wechat(config).middleware(async (message, ctx) => {
  return 'aaa';
}));
vcwen commented 6 years ago

@liangtongzhuo 这个koa-router的设计原因,没有匹配到任何路由的情况下,是不会执行use的中间件的,所以必须要指定一个路径。具体看这个 koa-router #257, 直接用use需要等koa-router 8之后才行。

liangtongzhuo commented 6 years ago

@liangtongzhuo 这个koa-router的设计原因,没有匹配到任何路由的情况下,是不会执行use的中间件的,所以必须要指定一个路径。具体看这个 koa-router #257, 直接用use需要等koa-router 8之后才行。

谢谢啦