当前位置: 首页 > 知识库问答 >
问题:

无法通过Axios和带有React和Node.js的Nodemailer发送post请求-在开发模式中

朱岳
2023-03-14

我用nodemailer和axios设置了react和nodejs应用程序,配置了一个从前端向后端发送数据的请求,但遇到了麻烦。

首先出现代理错误:无法将请求/服务/移动/约会/表单从localhost:3000代理到http://127.0.0.1:8000。(ECONNRESET),尽管我在frontend package.json“proxy”中写过:“http://127.0.0.1:8000”。我还尝试在backend Package.json中使用CORS,并进行了几十种配置,但都不起作用。

所以后端在根中,前端在前端目录中。

关于请求。我有一个farterorm页面,它从用户发送数据html" target="_blank">并发送到后端-一个带有post方法的路由'/form'接收req.body,并放置在nodemailer中发送电子邮件。

当我通过邮递员app直接发邮件到http://127.0.0.1/form时,一切正常,我收到了邮件。

但是,当我用axios通过前端发送post请求时,邮件在MailTrap中没有收到。

下面是处理通过页面发送电子邮件的代码:

import React from 'react'
import axios from 'axios'
import { Redirect } from 'react-router-dom' 

class Form extends React.Component {
    state = {
        values: {
            phoneNumber: '',
            email: '',
            firstName: '',
            lastName: '',
            address: '',
            notes: '',
        },
        isSubmitted: false,
    }
onInputChange = (event) => {
        let values = { ...this.state.values }
       
        for (let key in values) {

            if (event.target.name === key) {
                values[key] = event.target.value
            }
        }

        this.setState(() => {
            return {
                values,
            }
        })
    }


    render() {
        let values = []
        for (let key in this.state.values) {
            values.push(key)
        }

        const formCreating = values.map((field, index) => {
            return (
                <div key={index}>
                    <label>{field}</label>
                    <input
                        type="text"
                        name={field}
                        onChange={this.onInputChange}
                    />
                </div>
            )
        })

        return (
            <div>
                {this.props.allowed ? (
                    <div>
                        <form>
                            {formCreating}

                            <button
                                onClick={() =>
                                    axios
                                        .post(
                                            'form',
                                            this.state
                                                .values
                                        )
                                        .then(() =>
                                            console.log(
                                                'hey'
                                            )
                                        )
                                }
                            >
                                Submit
                            </button>
                        </form>
                    </div>
                ) : (
                    <Redirect to={'/services'} />
                )}
            </div>
        )
    }
}

为了节省您的时间:onInputChange将用户的输入放入状态,然后单击按钮将调用axios.post(('form'),this.state.events)--我想这会发送电子邮件,但它没有。

下面是backend Package.json中的npm脚本:

"scripts": {
        "start": "node server.js",
        "client": "npm run start --prefix frontend",
        "server": "nodemon server.js",
        "dev": "concurrently \"npm run client\" \"npm run server\""
}

有什么想法吗?

共有1个答案

崔宇
2023-03-14

使用Axios.Post时出错。您需要在发送请求时提及完整的URL,

null

axios.post(
          'http://127.0.0.1:8000/form',
          this.state
              .values
      )
      .then(() =>
          console.log(
              'hey'
          )
      )
 类似资料:
  • 我在通过C#API中的WebClient发送POST请求时遇到问题。该职位要求如下: 我知道如何处理像用户代理等标题。,但是我对边界有一个问题。我不知道怎么把它们放在哪里...

  • 我已经创建了一个帐户与sendInBlue,并导入了nodemailer和nodemailer-sendinblue-transport到我的项目中,我正在尝试发送一个简单的确认电子邮件。下面的代码是我如何尝试安装的: 下面的代码是我的注册方法中负责发送确认邮件的一节: 当我运行我的程序时,注册过程成功,但抛出以下错误,而不是发送电子邮件: 错误:在数据库中找不到键(失败,401) 我读到他们的v

  • axios请求点击控制器上的url,但将空值设置到POJO类中,当我使用chrome中的开发人员工具时,有效负载包含数据。我做错了什么? Axios POST请求: 浏览器响应: 过帐多部分/表单数据时出错。Content-Type标头缺少边界 谁能解释一下如何设置边界或者我如何使用Axios发送表单数据。

  • 我已经在本地()设置了一个基本的NodeJS服务器(使用nodemailer模块),这样我就可以测试该服务器是否真的可以发送电子邮件。 如果我正确理解SMTP选项(如果我错了,请纠正我),我可以尝试从我的服务器直接发送电子邮件到某人的电子邮件帐户,或者我可以发送电子邮件,仍然使用node.js,但通过一个实际的电子邮件帐户(在本例中是我的个人Gmail帐户),即使用SMTP。此选项要求我通过Nod

  • 我是一名服务器端开发人员,学习vanilla JS的诀窍。我需要澄清我的概念,即为我在JS中创建的图像对象发送Ajax POST请求——这个问题与此有关。 想象一下一个网络应用,用户上传照片供他人查看。在上传每个图像时,我使用vanilla JS确认图像的mime类型(通过解释幻数),然后调整图像大小以达到优化目的。 调整大小后,我会: 返回的图像对象必须通过Ajax请求发送到后端。比如: 然而,

  • 问题内容: 我想将我的网址发送到(和)。 我当前的请求代码不起作用。 使用是 不是 一个容易回答。 问题答案: 在iOS中发送和请求非常容易。无需其他框架。 请求: 首先,将我们的(按需发送的内容)创建为,然后将其转换为。 目标 接下来,我们阅读的,因此我们可以将其传递给请求。 现在我们有了要发布的内容,我们可以创建一个,并包含我们的。 迅速 最后,我们可以发送请求,并通过创建新的请求来阅读回复: