【发布时间】:2018-10-16 17:58:28
【问题描述】:
我正在尝试在 NativeScript 插件中实现 iOS 委托,但出现错误:
由于未捕获的异常而终止应用程序'NativeScript遇到致命错误:ReferenceError:找不到变量:__metadata
我原来的代码是:
@ObjCClass(SQRDCheckoutControllerDelegate)
export class SquareReader extends NSObject implements SQRDCheckoutControllerDelegate {
/*
iOS delegate implementation here
(source https://docs.connect.squareup.com/payments/readersdk/setup-ios)
*/
}
这在 js 中被转译为:
SquareReader = __decorate([
ObjCClass(exports.SQRDCheckoutControllerDelegate),
__metadata("design:paramtypes", [])
], SquareReader);
如果我只是删除 __metadata 行,我会得到一个不同的错误:
由于未捕获的异常而终止应用程序'NativeScript 遇到致命错误:错误:协议“未定义”不是协议对象。
有什么想法吗?我见过像nativescript-image-swipe 这样的其他示例,其中代码在没有 __metadata 方法的情况下被转译,导致我认为转译可能有问题
【问题讨论】:
-
嗨@Frank,确保您在插件中添加了
tns-platform-declarations- github.com/PeterStaev/nativescript-image-swipe/blob/master/…。更多关于如何设置的信息,可以在这里找到 - npmjs.com/package/tns-platform-declarations。 -
@NikolayTsonev 感谢您的提示。我确实有 tns-platform-declarations 设置(我从种子中复制了我的插件)。这是我的 package.json:https://github.com/fhackenb/nativescript-square-reader/blob/master/src/package.json 我也尝试剪切和粘贴彼得代码的相关部分,它给了我同样的错误
标签: ios typescript nativescript nativescript-plugin square-reader