ошибка nativescript-carousel с объявлениями платформы tns

#android #angular #typescript #nativescript

#Android #angular #typescript #nativescript

Вопрос:

Я создаю карусель nativescript, используя подключение nativescript-carousel, но когда я выполняю сборку Android на tns, я получаю эту ошибку:

node_modules/nativescript-carousel/index.d.ts(1,22): ошибка TS6053: файл ‘D:/Documents/coursera_examples/nativescript/VilcabambaHotel/node_modules/nativescript-carousel/node_modules/tns-platform-declarations/android.d.ts ‘не найдено.

Мой home.component.html карусель — это:

     <GridLayout  horizontalAlignment="center" verticalAlignment="top" rows="*" columns="*" height="95%">        
    <Carousel #carousel ios:indicatorOffset="0,-10" ios:finite="true" ios:bounce="false" showIndicator="true" height="100%" indicatorAnimation="SWAP"
        indicatorColor="#66ccff" indicatorColorUnselected="#cceeff" height="250" width="80%">
        <CarouselItem backgroundColor="white" height="100%">
            <GridLayout *ngIf="cabin">
                <Image  [src]="BaseURL   cabin.image" ></Image>
            </GridLayout>
        </CarouselItem>
        <CarouselItem backgroundColor="white">
           <GridLayout *ngIf="house">
                <Image  [src]="BaseURL   house.image" ></Image>
            </GridLayout>
        </CarouselItem>
        <CarouselItem backgroundColor="white">
           <GridLayout *ngIf="ecoactivity">
                <Image  [src]="BaseURL   ecoactivity.image" ></Image>
            </GridLayout>
        </CarouselItem>
    </Carousel>
    </GridLayout>
  

это мой home.component.ts

 import { Component, OnInit, Inject, ChangeDetectorRef } from '@angular/core';

//import { TNSFontIconService } from 'nativescript-ngx-fonticon';
import { Page } from "ui/page";
import { View } from "ui/core/view";
import { SwipeGestureEventData, SwipeDirection } from "ui/gestures";
import * as enums from "ui/enums";

import { Cabin } from '../shared/cabin';
import { CabinService } from '../services/cabin.service';
import { House } from '../shared/house';
import { HouseService } from '../services/house.service';
import { Ecoactivity } from '../shared/ecoactivity';
import { EcoactivityService } from '../services/ecoactivity.service';
import { DrawerPage } from '../shared/drawer/drawer.page';



import { registerElement } from 'nativescript-angular/element-registry';
import { Carousel, CarouselItem } from 'nativescript-carousel';

registerElement('Carousel', () => Carousel);
registerElement('CarouselItem', () => CarouselItem);

@Component({
    selector: 'app-home',
    moduleId: module.id,
    templateUrl: './home.component.html',
    // styleUrls: ['./home.component.css']
})
export class HomeComponent extends DrawerPage implements OnInit {

    cabin: Cabin;
    house: House;
    ecoactivity: Ecoactivity;
    cabinErrMess: string;
    houseErrMess: string;
    ecoactivityErrMess: string;


    constructor(private cabinservice: CabinService,
        private houseservice: HouseService,
        private ecoactivityservice: EcoactivityService,
        private changeDetectorRef: ChangeDetectorRef,
        private page: Page,
       // private fonticon: TNSFontIconService,
        @Inject('BaseURL') private BaseURL) {
        super(changeDetectorRef);
    }

    ngOnInit() {
        this.cabinservice.getFeaturedCabin()
            .subscribe(cabin => this.cabin = cabin,
                errmess => this.cabinErrMess = <any>errmess);
        this.houseservice.getFeaturedHouse()
            .subscribe(house => this.house = house,
                errmess => this.houseErrMess = <any>errmess);
        this.ecoactivityservice.getFeaturedEcoactivity()
            .subscribe(ecoactivity => this.ecoactivity = ecoactivity,
                errmess => this.ecoactivityErrMess = <any>errmess);

    }
  

Ошибка исчезает, если я удаляю следующие строки кода, но моя карусель перестает работать

импортируйте { registerElement } из ‘nativescript-angular/element-registry’; импортируйте { Carousel, CarouselItem } из ‘nativescript-carousel’;

registerElement(‘Carousel’, () => Карусель); registerElement(‘CarouselItem’, () => Карусельный элемент

Я создал документ под названием reference.d.ts со следующими строками кода, но ошибка все еще существует.

 /// <reference path="./node_modules/tns-platform-declarations/ios.d.ts" />
/// <reference path="./node_modules/tns-platform-declarations/android.d.ts" />
  

Ответ №1:

Похоже на неправильное использование объявления в плагине, вы могли бы вручную настроить его, обновив путь к

 /// <reference path="../tns-platform-declarations/android.d.ts" />
  

От

 /// <reference path="./node_modules/tns-platform-declarations/android.d.ts" />
  

в index.d.ts

Редактировать:

Если вы все еще обнаружите какие-либо другие ошибки TS, вы можете просто добавить "skipLibCheck": true inside compilerOptions в свой tsconfig.json .

Комментарии:

1. Я попытался добавить это в свой inde.d.ts запустил tns build Android и по-прежнему получаю ту же ошибку. Если я удалю свой файл reference.d.ts, я получу ту же ошибку плюс эти 3 ошибки: node_modules/nativescript-carousel/index.d.ts(45,54): ошибка TS2304: не удается найти имя «android». node_modules/nativescript-carousel/index.d.ts(53,16): ошибка TS2503: не удается найти пространство имен ‘android’. node_modules/nativescript-carousel/index.d.ts(56,51): ошибка TS2304: не удается найти имя «android».

2. Вы пробовали чистую сборку?

3. Да, у меня есть. Я удалил платформу tns для Android, затем платформу tns для добавления Android, удалил мои node_modules и перехваты и установил npm

4. Если бы вы удалили node_modules, то вы бы потеряли изменения, которые вы уже сделали выше. Простое удаление папки platforms после изменения приведенной выше строки должно быть хорошим.

5. Я добавил изменение после того, как удалил node_modules. Я попытался выполнить чистую сборку после переустановки node_ modules и добавил приведенную выше строку, но все равно получаю ту же ошибку