Nativescript TypeError: Cannot read property 'items' of undefined

Nativescript TypeError: Cannot read property 'items' of undefined

我正在借助 NativeScript Sidekick 构建移动应用程序。随着 Nativescript 6.0 的发布,我被迫迁移到这个更新的版本。不幸的是,这导致我的某些应用程序页面无法访问。

为了寻找解决方案,我遍历了 Nativescript 和一般论坛以及 Nativescript 关于此迁移的帖子。我也遇到了一些被称为 hooks 的东西,但我找不到任何与我面临的问题明确相关的东西。 Whosebug 帖子似乎充满了类似的问题,但提供的解决方案并没有帮助我解决导致我的页面崩溃的特定 TypeError。

因为我使用 Git 进行源代码控制,所以我尝试切换到不同的 b运行ches,看看我是否可以在那里继续开发。所有 b运行ches war运行 都得到了相同的结果:我无法在不迁移到 6.0 的情况下构建我的项目,这导致了相同的 TypeError。

随后,我尝试设置和更新任何可能导致问题的包依赖项,因为我的 phone 的 StackTrace 一直引用文件 vendor.js。这没有帮助。

在绝望的尝试中,我决定完全删除 Android 文件和我的项目文件的任何痕迹,之后我使用 choco 包管理器干净地重新安装了所有必需的软件,如概述 here。我跳过了安装模拟器,因为我正在 运行 通过 tns run android 在物理 Android 设备上安装所有内容。 运行 tns doctor 在终端确认一切正常。然后,我从远程存储库进入 git clone master,并通过 git checkout -b test 创建了一个本地测试 b运行ch。我再次 运行 我的项目使用 tns。虽然应用程序已构建,但由于迁移,相同的页面仍然会崩溃。

these steps 之后,我打开了 Git Bash 并执行了以下命令:

tns device android --available-devices 找到我的设备 ID

tns run --device fooId 在我选择的设备上构建和 运行 项目

这是 TypeError 和相关 StackTrace 的开头:

System.err: An uncaught Exception occurred on "main" thread.
System.err: Calling js method onCreateView failed
System.err: TypeError: Cannot read property 'items' of undefined
System.err:
System.err: StackTrace:
System.err:     Frame: function:'push.../node_modules/tns-core-modules/ui/tabs/tabs.js.Tabs.onLoaded', file:'file:///node_modules\tns-core-modules\ui\tabs\tabs.js:384:0
System.err:     Frame: function:'', file:'file:///node_modules\tns-core-modules\ui\core\view-base\view-base.js:311:75
System.err:     Frame: function:'push.../node_modules/tns-core-modules/ui/core/view-base/view-base.js.ViewBase.callFunctionWithSuper', file:'file:///node_modules\tns-core-modules\ui\core\view-base\view-base.js:304:0
System.err:     Frame: function:'push.../node_modules/tns-core-modules/ui/core/view-base/view-base.js.ViewBase.callLoaded', file:'file:///node_modules\tns-core-modules\ui\core\view-base\view-base.js:311:0
System.err:     Frame: function:'push.../node_modules/tns-core-modules/ui/core/view-base/view-base.js.ViewBase.loadView', file:'file:///node_modules\tns-core-modules\ui\core\view-base\view-base.js:439:0
System.err:     Frame: function:'', file:'file:///node_modules\tns-core-modules\ui\core\view-base\view-base.js:233:0
System.err:     Frame: function:'push.../node_modules/tns-core-modules/ui/layouts/layout-base-common.js.LayoutBaseCommon.eachChildView', file:'file:///node_modules\tns-core-modules\ui\layouts\layout-base-common.js:125:0
System.err:     Frame: function:'push.../node_modules/tns-core-modules/ui/core/view/view-common.js.ViewCommon.eachChild', file:'file:///node_modules\tns-core-modules\ui\core\view\view-common.js:992:0
System.err:     Frame: function:'push.../node_modules/tns-core-modules/ui/core/view-base/view-base.js.ViewBase.onLoaded', file:'file:///node_modules\tns-core-modules\ui\core\view-base\view-base.js:232:0
System.err:     Frame: function:'push.../node_modules/tns-core-modules/ui/core/view/view.js.View.onLoaded', file:'file:///node_modules\tns-core-modules\ui\core\view\view.js:240:0
System.err:     Frame: function:'', file:'file:///node_modules\tns-core-modules\ui\core\view-base\view-base.js:311:75
System.err:     Frame: function:'push.../node_modules/tns-core-modules/ui/core/view-base/view-base.js.ViewBase.callFunctionWithSuper', file:'file:///node_modules\tns-core-modules\ui\core\view-base\view-base.js:304:0
System.err:     Frame: function:'push.../node_modules/tns-core-modules/ui/core/view-base/view-base.js.ViewBase.callLoaded', file:'file:///node_modules\tns-core-modules\ui\core\view-base\view-base.js:311:0
System.err:     Frame: function:'push.../node_modules/tns-core-modules/ui/core/view-base/view-base.js.ViewBase.loadView', file:'file:///node_modules\tns-core-modules\ui\core\view-base\view-base.js:439:0
System.err:     Frame: function:'', file:'file:///node_modules\tns-core-modules\ui\core\view-base\view-base.js:233:0
System.err:     Frame: function:'push.../node_modules/tns-core-modules/ui/layouts/layout-base-common.js.LayoutBaseCommon.eachChildView', file:'file:///node_modules\tns-core-modules\ui\layouts\layout-base-common.js:125:0
System.err:     Frame: function:'push.../node_modules/tns-core-modules/ui/core/view/view-common.js.ViewCommon.eachChild', file:'file:///node_modules\tns-core-modules\ui\core\view\view-common.js:992:0
System.err:     Frame: function:'push.../node_modules/tns-core-modules/ui/core/view-base/view-base.js.ViewBase.onLoaded', file:'file:///node_modules\tns-core-modules\ui\core\view-base\view-base.js:232:0
System.err:     Frame: function:'push.../node_modules/tns-core-modules/ui/core/view/view.js.View.onLoaded', file:'file:///node_modules\tns-core-modules\ui\core\view\view.js:240:0
System.err:     Frame: function:'', file:'file:///node_modules\tns-core-modules\ui\core\view-base\view-base.js:311:75
System.err:     Frame: function:'push.../node_modules/tns-core-modules/ui/core/view-base/view-base.js.ViewBase.callFunctionWithSuper', file:'file:///node_modules\tns-core-modules\ui\core\view-base\view-base.js:304:0
System.err:     Frame: function:'push.../node_modules/tns-core-modules/ui/core/view-base/view-base.js.ViewBase.callLoaded', file:'file:///node_modules\tns-core-modules\ui\core\view-base\view-base.js:311:0

我发现 Nativescript 6.0 引入了 two new components,我相信它正在 Beta 测试中。我的项目已经有一个由名称 Tabs 定义的自定义组件,它与其中一个组件冲突,因此导致页面崩溃。在我的项目中更改此组件的名称及其引用解决了这个问题。