Angular 当我将电子邮件放入有效负载时,代理出错

Angular proxy got error when I put email in payload

我使用Angular开发重置密码模块,我需要先发邮件到后端验证。我使用代理向后端发送 API 请求,以下是我的代理设置:

"/api": {
    "target": "http://localhost:3000",
    "secure": false,
    "changeOrigin": true
  }

然后我发现这个API请求总是出现以下错误,即使后端已经收到这个电子邮件验证请求并完成处理。 (只有这个 api 请求,其他请求都可以正常工作)有人可以帮助解决这个问题吗?

[HPM] Error occurred while trying to proxy request /api/reader/verifyemail from localhost:4200 to http://localhost:3000 (ECONNRESET) (https://nodejs.org/api/errors.html#errors_common_system_errors)

以下是我的组件代码 - 调用 API 部分:

submitEmail() {
    const val = this.email.value; //email value from input element
    this.readerService.verifyEmail({ email: val }).subscribe((data) => {
      if (data) {
        this.logger.info(`Email validation success for reader ${data}`);
        this.readerService.sendResetEmail(val).subscribe((data) => {
          if (data) {
            window.alert('Please check your email and follow it to reset the password');
            this.router.navigateByUrl('/reader/login');
          }
        })
      } else {
        this.logger.warn('Email validation failed');
        window.alert('No account is associated with this email')
      }
    })
  }

以下是我在前端的 API 服务:

verifyEmail(input: emailDto): Observable<any> {
    return this.http.post('/api/reader/verifyemail', input).pipe(
      catchError(this.handleError('verifyEmail')), shareReplay()
    )
  }

后端 API 部分应该没问题,因为我测试了一切,包括发送重置电子邮件,一切正常。它们的 return 值为 json 对象或 null,就像我的其他 API 一样。 非常感谢!

找到原因了,因为我的html文件问题,我用FormBuild代替FormControls重新定义表单,错误消失了。