编辑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
并将其插入@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)));
}
编辑:
我已订阅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