#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 и добавил приведенную выше строку, но все равно получаю ту же ошибку