fix: 【发行为混合分包】TypeError: t.$callHook is not a function #4829
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
#4781
当发行为混合分包的时候,uniapp 会调用 initCreateSubpackageApp 方法
initCreateSubpackageApp 里调用 parseApp ,并在 onLaunch 时候进行 initBaseInstance
initCreateSubpackageApp 里调用 parseApp 后同步执行
vm.$.ctx.$scope = app;
initBaseInstance 在 onLaunch 会进行
if (this.$vm && ctx.$scope) {return;}
阻断,如果通过则执行ctx.$hasHook = hasHook; ctx.$callHook = callHook;
问题出在 onLaunch 是异步的,导致 4 的流程阻断,没有执行 $callHook 赋值,最终导致
initAppLifecycle
中的vm.$callHook
为 undefined