Nativescript-角度发布请求管道(map())不返回任何内容,没有引发任何错误

时间:2019-03-23 19:24:07

标签: angular authentication request nativescript nativescript-angular

编辑4: 我能够解决问题。我不确定到底是什么问题。无论如何,我将尝试描述是什么使我最终解决了问题。首先,我尝试在ios上构建它,当我最终能够做到这一点时,出现一个错误,告诉我我没有权限可以从ios发出http请求。我通过将以下内容添加到info.plist文件中来解决了该问题

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

之后,我没有更改应用程序的ID,因为我正在构建云构建,只需对其进行更改或进行本地构建即可。

已删除平台,挂钩和node_modules文件夹。

npm i在根文件夹上。另一个build,它又奇迹般地工作了。


说明:我正在为本机脚本角度的应用程序使用共享代码。虽然移动应用程序的功能不是很多,但登录Web应用程序仍可以正常工作。我正在通过Laravel API进行身份验证。应该返回一个令牌。

请求返回null,并且后端没有任何迹象表明请求到达那里。

我已经搜索并尝试了成千上万的解决方案,我对Angular和Nativescript还是很陌生,所以它仍然可能是基本的东西。

我确实已导入NativeScriptHttpClientModule并将其插入@NgModuleapp.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)));

    }

编辑: 我已订阅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: 我已成功构建该应用程序,并在物理连接的android设备上使用Nativescript Sidekick运行devtools。我没有错误,实际上我认为请求已发送,尽管它们始终保持 Pending 状态。

同样,在 Web应用上,一切正常

Chrome DevTools screenshot showing that requests are being sent

0 个答案:

没有答案