包含platform.js后,Nativescript应用程序无法构建

时间:2019-01-12 22:25:58

标签: android nativescript

我有一个Nativscript 5.0应用程序,需要访问平台信息(设备,屏幕)。我添加了tns核心模块platform.js,然后使用“ tns run android”重建了整个项目。

现在我收到此错误:

System.err: TypeError: Cannot read property 'getContentResolver' of undefined
tns_modules/tns-core-modules/platform/platform.js', line: 79, column: 83

此错误引用了platform.android.js中的以下代码:

Object.defineProperty(Device.prototype, "uuid", {
        get: function () {
            if (!this._uuid) {
                var nativeApp = appModule.android.nativeApp;
                this._uuid = android.provider.Settings.Secure.getString(nativeApp.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);
            }
            return this._uuid;
        },
        enumerable: true,
        configurable: true
    });

特别是,nativeApp似乎未定义。我正在通过Android模拟器运行此代码。我在这里想念什么?我需要在某个地方显式定义操作系统以防止发生此错误吗?

谢谢

2 个答案:

答案 0 :(得分:1)

您必须太早访问平台模块,甚至在nativeApp实例完全初始化并可以使用之前。

您可以等到displayed / activityCreated事件或任何组件的loaded事件,以确保nativeApp准备就绪。

答案 1 :(得分:0)

尝试获取device.uuid时出现此错误。我设法通过使用launchEvent使其起作用:

import { on as applicationOn, launchEvent } from 'tns-core-modules/application'
import { device } from 'tns-core-modules/platform'

applicationOn(launchEvent, () => {
    // Use device.uuid here
})