Closed yuexing0921 closed 7 years ago
现在这个错误发现是配置了二级域名导致的,weixin.xxx.com/wechat,
然后配置正确了但是无法获取微信端发送的数据,调查源码发现是hook导致的,
一开始路由解析是这样:
route_parse: ["prepend", "csrf", "subdomain","parse_wechat"]
修改成:
route_parse: ["prepend", "parse_wechat","csrf", "subdomain"]
parse_wechat一定要紧跟prepend后面才行,否则没有办法正确的解析。
现在新的问题来了,能接收到微信的发送的数据,但是进入controller到init后,__before(包含)后就不走了 , 直接用域名访问weixin.xxx.com/wechat/text能正常的进入到controller,并且打印信息
下面是我的代码路径
下面是wechat.js的源代码
export default class extends Base {
init(http){
super.init(http);
console.log("init");
var message = this.post();
console.log(message);
}
__before(){
console.log('__before');
}
/**
* index action
* @return {Promise} []
*/
indexAction(){
console.log("indexAction");
let echostr = this.get('echostr');
return this.end(echostr);
}
reply(message){
console.log("reply");
this.http.res.reply(message);
}
textAction(){
console.log("textAction");
var message = this.post();
var msg = message.Content.trim();
this.reply('测试成功:'+msg);
}
eventAction(){
console.log("eventAction");
let message = this.post();
console.log(message);
this.reply(JSON.stringify(message));
}
__call(){
console.log("__call");
this.reply(DEFULT_AUTO_REPLY);
}
}
@akira-cn 月影大大看看是怎么回事
目前已经暂时解决了,把hook.js的csrf组件去除掉就好了。 应该是微信提交的没有csrf的认证信息,所以导致被拦截了,坑爹的是,这个组件也没有提示。
按照官网的例子,控制台一直输出以下信息: /wechat<>weixin/wechat You have triggered an unhandledRejection, you may have forgotten to catch a Promise rejection: Error: PREVENT_NEXT_PROCESS
nodejs : 7.4 thinkjs : 2.2.16