Open xzusoft opened 5 years ago
"naixiaoxin/think-wechat": "^1.4", "topthink/think-queue": "^2.0",
这是什么原因导致的呢?说出来,大家一起来想想办法来解决
目前来看是在命令行模式下 容器的关系绑定有些问题 怀疑是本身TP设计缺陷 正在尝试解决
hi 尝试在app/tags.php中 app_init增加我的行为扩展
'app_init' => [
\Naixiaoxin\ThinkWechat\Behavior\AppInit::class
],
错误还是依然存在
作者测试是可以的吗?????
还以为和Swoole是一个问题~~ 确实是有问题。 我是在app_init钩子里注入了我的类。但是app_init只要在\think\App:run里才执行,并不会在queue里执行。我这边还在想另外的办法去解决这个问题
看来是无解了 肿么办呢 .....
已经给官方提交了issue top-think/framework#1600
我将作为app_init
类初始化的原因其实就是因为认为app_init
是任何初始化都会执行的。
而且官方文档中说明的也是如此
但是事与愿违,app_init却在run函数里才执行。run函数是用来调度路由/执行http业务的。所以在路由中是正常的,但是在命令行中是有异常的。
在 Swoole 环境下也出现了如上问题,例如异步任务,目前的解决方案就是调用之前先进行:
$appInit = new AppInit(); $appInit->run();
官方给的方案 其实是建议自己在Console文件里加钩子。。这样就改动了官方的源码了 就因为这个不多导致的。。 详见top-think/framework#1600
今天遇到同样的问题 。。。
@qiqizjl 我在 think 里加了 $appInit = new \Naixiaoxin\ThinkWechat\Behavior\AppInit(); $appInit->run(); 1楼的报错已经绕过,但是出现新的问题 Credential "component_verify_ticket" does not exist in cache. 请问这个应该怎么填 ?
@w263756314 你用的是三方开发平台? 三方开发平台需要先让微信回调ticket才可以
@qiqizjl 已解决哈,谢谢 解决记录我发在这里了 解决办法
现在这个问题有办法解决吗?
`namespace app\home\queue; use think\queue\Job;
use Naixiaoxin\ThinkWechat\Facade; use app\home\model\Wechat;
class ReleaseCode{
}
命令端运行报
[think\exception\ClassNotFoundException]class not exists: wechat.open_platform `
这个是怎么回事?