尝试从 api.ipify.org 获取 IP 地址时出现 Angular HTTP 错误

Posted

技术标签:

【中文标题】尝试从 api.ipify.org 获取 IP 地址时出现 Angular HTTP 错误【英文标题】:Angular HTTP Error while trying to obtain IP address from api.ipify.org 【发布时间】:2019-09-10 19:09:36 【问题描述】:

我是 Angular 的新手。我正在尝试使用 api.ipify.org API 获取客户端的 IP 地址。下面显示的代码出现错误。谁能建议我如何解决这个问题。

来自 CommonService 的代码

import  Injectable  from '@angular/core';
import  HttpClient  from '@angular/common/http';
import  map  from 'rxjs/operators';
import  Observable  from 'rxjs';
@Injectable(
  providedIn: 'root'
)
class IP 
  ip: string;

export class CommonService 
  constructor(private http: HttpClient)  
  strIPObservable: Observable<IP[]>;
  getClientIP()
    return this.strIPObservable = this.http.get<IP[]>('http://api.ipify.org/');
  


下面的代码来自登录组件

import  Component, OnInit  from '@angular/core';
import  Router  from '@angular/router';
import  HttpErrorResponse, HttpClient  from '@angular/common/http';
import  Form, FormBuilder  from '@angular/forms';
import  CommonService  from '../CommonService/common.service';
@Component(
  selector: 'app-login',
  templateUrl: './login.component.html',
  styleUrls: ['./login.component.css'],
  providers: [ CommonService ]
)
export class LoginComponent implements OnInit 
  LoginForm: Form;
  private router: Router;
  constructor(private ClsCommon: CommonService) 
  
  strIP: any;
  ngOnInit() 
    this.strIP = this.ClsCommon.getClientIP();
  

  OnSubmit(UserID: string, UserPwd: string) 
  

下面的代码来自 login.html

<span>By Logging in, you accept ClearDesk's T&Cs.</span>
         <br>Your IP Address is =>  strIP.ip 
</mat-card-content>

下面是我得到浏览器控制台的错误

即使在将 CommonService 添加到提供程序数组之后...它显示另一个错误

【问题讨论】:

在 Providers 数组中添加CommonService Angular no provider for NameService的可能重复 尝试复制,看看是否有效 在将提供程序添加到 module.ts 后仍然出现错误 @PrashantPimpale 你告诉我的代码不适用于我的代码..... 【参考方案1】:

您在错误的班级提供了Injectable()。您已将您的课程 IP 设为可注射而不是您的服务。将该代码的位置更改为:

@Injectable(
  providedIn: 'root',
)
export class CommonService 

// ....

【讨论】:

我只生成了这样的服务......它已经存在于代码中...... 如果您不向我们展示,我们怎么知道?请提供minimal reproducible example 以便能够正确帮助您。 @AGT_82 抱歉……请看一下……我没有添加,因为它是由 ng 命令自动生成的…… 现在检查答案,您在错误的课程中提供了注射剂;) 那么我应该在哪里更改类 ip

以上是关于尝试从 api.ipify.org 获取 IP 地址时出现 Angular HTTP 错误的主要内容,如果未能解决你的问题,请参考以下文章

android 获取IP地址

android 获取IP地址

android 获取IP地址

查询主机公网ip

Golang常见误区

JS:变量返回未定义,除了之前定义它