你这里报错是 event.currentTarget = target; 这个行,然后 log 是打印了 _captureListeners 为 null ?
错误是这个
我这边测试了,不好重现你的问题都没报错,能否麻烦你给一个能重现的简单 demo 吗?
或者你调试看看,为什么 _captureListeners 是 undefined,按道理 undefined 是不会进入这个 if 判断的 
我单独新建场景,测试也无法复现,所以很尴尬,可以告诉大概是什么东西有可能出错.我自己找找也行
估计target为undefined
目前最好的办法就是打断点调试,看看为什么 _captureListeners 为 undefined
或者官方有没有比较稳定的pageview 嵌套 scrollview有什么方案吗
目前没有,你看看论坛上有没有吧
去掉item上的button事件后基本不会复现,但是这个怎么处理呢?
居然还要为什么会触发该问题,才能知道如何修复,能否具体的描述一下呢?
呦。我的文章~~ 你把那个target 加多个非空判断 , 就暂时性忽略这个BUG。没多大影响。项目都上线跑了的
原函数cachedArray用函数外局部变量赋值,在嵌套调用时,会把记录状态抹掉,导致错误,改成cachedArray为函数内局部变量
`function _doDispatchEvent(owner, event) {
var target, i;
event.target = owner;
// Event.CAPTURING_PHASE
//修改这里
// _cachedArray.length = 0;
let cachedArray = [];`
小秘书你好
cocos creator 版本: 3.0;
复现情况:当嵌套的scrollView的content下的item节点上有监听touch事件,例如item有button组件的时候就会出错
原因:item节点有touch事件的时候,item在dispatch touch-move事件时,捕获阶段_cachedArray 是Scrollview和PageView,第一次for循环的时候,在target.eventProcessor.capturingTargets.emit(event.type, event, _cachedArray)时scrollview的_onTouchMoved方法内的(event.target as Node).dispatchEvent(cancelEvent)事件将_cachedArray清空了,所以第二次循环的时候,没有target。item节点没有touch事件的时候,第一个touch-move的dispatch节点可能是scrollview,所以捕获阶段_cachedArray是pageview,第一次循环之后也会清空,但是第二次的时候i = -1了,所以循环结束了,不会报错