Ошибка трансляции делегата NativeScript iOS (не удается найти переменную: __metadata)

Я пытаюсь реализовать делегат iOS в плагине NativeScript и получаю сообщение об ошибке:

Завершение работы приложения из-за неперехваченного исключения '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 обнаружил фатальную ошибку: Ошибка: протокол« undefined »не является объектом протокола.

Любые идеи? Я видел другие примеры, такие как nativescript-image -swipe, где код переносится без метода __metadata, что заставляет меня думать, что с транспиляцией что-то не так


person Frank    schedule 16.10.2018    source источник
comment
Привет, @Frank! Убедитесь, что вы добавили tns-platform-declarations в свой плагин - github.com/PeterStaev/nativescript-image-swipe/blob/master/. Дополнительную информацию о том, как его настроить, можно найти здесь - npmjs.com/package/tns -платформы-декларации.   -  person Nikolay Tsonev    schedule 17.10.2018
comment
@NikolayTsonev спасибо за подсказку. У меня есть настройка tns-platform-declrations (я скопировал свой плагин из семени). Вот мой package.json: https://github.com/fhackenb/nativescript-square-reader/blob/master/src/package.json Я также попытался просто вырезать и вставить соответствующие части кода Питера, и это дало мне ту же ошибку   -  person Frank    schedule 17.10.2018


Ответы (1)


Я решил это, убрав напечатанный текст. Я просто повторно запустил команду, чтобы сгенерировать типизацию: TNS_TYPESCRIPT_DECLARATIONS_PATH="$(pwd)/typings" tns build ios и поместил их в мой каталог / src для моего плагина. Как только я набрал правильный текст, проект запустился, как и ожидалось, и делегат заработал.

person Frank    schedule 19.10.2018