Nativescript-канал запроса angular post (map()) ничего не возвращает, ошибок нет

#angular #authentication #request #nativescript #nativescript-angular

#angular #аутентификация #запрос #nativescript #nativescript-angular

Вопрос:

ПРАВКА 4: я смог решить проблему. Я не уверен, в чем именно заключалась проблема. В любом случае, я попытаюсь описать, что заставило меня наконец решить проблему. Прежде всего, я попытался создать его на ios, и когда я, наконец, смог это сделать, у меня возникла ошибка, которая сообщила мне, что у меня нет разрешений на выполнение http-запросов из ios. Я решил это, добавив следующее в info.plist файл

 <key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    ...
</dict>
  

После этого я не менял идентификатор приложения, потому что я делал облачные сборки, просто измените его или перейдите к локальным сборкам.

Удалены платформы, перехваты и папки node_modules.

npm i в корневой папке. Еще один build , и он чудесным образом снова заработал.


Описание: Я использую общий код для приложения nativescript-angular. Вход в веб-приложение работает нормально, хотя в мобильном приложении не так сильно. Я выполняю аутентификацию через Laravel API. Предполагается, что он возвращает токен.

Запрос возвращает null и никаких признаков от серверной части, что запрос туда попадает.

Я искал и перепробовал тысячи решений, я вроде как новичок в Angular и Nativescript, так что это все еще может быть что-то базовое.

Я NativeScriptHttpClientModule импортировал и вставил в массив поставщиков @NgModule в app.module.tns.ts

 import { NativeScriptHttpClientModule } from "nativescript-angular/http-client";
  

Вот где у меня проблема, единственные ошибки, выданные в tns preview --bundle команде, после того, где проблема. Пожалуйста, ознакомьтесь с комментариями ниже.

В authentication.service.ts файле

 login(email: string, password: string) {
        let data = { 
            'email': email, 
            'password': password 

        };

        // Email and password get through here fine.

        return this.http.post<any>(`${env.config.apiUrl}/api/login`,
             this.getFormUrlEncoded(data))
            .    pipe(map( (user) => {

               // -> returns user=null and the only error I get 
                     is relative to the code below, error TS2339: Property 
                     'token' does not exist on type '{}'


                if (user amp;amp; user.token) {

                    this.storage.setItem('currentUser', JSON.stringify(user));
                    this.currentUserSubject.next(user);
                }


                return user;
            }).catch(error => Observable.throw(error)));

    }
  

Редактировать:
Я зарегистрировался в login.component.tns.ts файле

 login() {

        console.log(this.f.password.value);
        this.authenticationService.login(this.f.email.value, this.f.password.value)
            .pipe(first())
            .subscribe(
                data => {

                    this.router.navigate([this.returnUrl]);
                },
                error => {
                    this.alertService.error(error);
                    this.loading = false;
                });
    }
  

ПРАВКА 2:

Я думаю, это как-то связано с приложением предварительного просмотра tns, я пытаюсь создать приложение локально, чтобы узнать, смогу ли я успешно войти в систему.

ПРАВКА 3: я успешно создаю приложение и запускаю devtools с помощью Nativescript Sidekick на моем физически подключенном устройстве Android. У меня нет ошибок, и на самом деле я думаю, что запросы отправляются, хотя они сохраняются со статусом Ожидание навсегда.

Опять же, в веб-приложении все работает нормально

Скриншот Chrome DevTools, показывающий, что запросы отправляются

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

1. Похоже, вы получаете пустой ответ от сервера. Вы подтвердили, что запрос отправляется?

2. Вы subscribe куда login угодно?

3. Эй, я подписываюсь на login.component.tns.ts , this.authenticationService.login(some_data).pipe(first()).subscribe(some_data => {...})

4. @theMayer Я на самом деле не думаю, что запрос отправляется, и я не знаю почему, ошибок не выдано… Если я делаю запрос post через postman или через веб-приложение, все работает должным образом

5. Проверьте network вкладку в инструментах отладчика (ctrl shift i) во время выполнения запроса — это скажет вам наверняка, что происходит, а что нет.