Nativescript-угловой канал отправки запроса (map ()) ничего не возвращает, ошибки не выдаются - PullRequest
0 голосов
/ 23 марта 2019

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

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

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

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

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


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

Запрос возвращается нулевым, и от Бэкэнда нет никаких признаков того, что запрос поступил туда.

Я искал и пробовал тысячи решений, я новичок в 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 && user.token) {

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


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

    }

EDIT: Я подписан на 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 preview, я пытаюсь создать приложение локально, чтобы определить, могу ли я успешно войти в систему.

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

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

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

...