NextJS 和 React:无法读取未定义的 属性 'email'
NextJS and React: Cannot read property 'email' of undefined
我尝试将数据从我的客户端发送到我的服务器。为此,我将 React 与 NextJS 结合使用,因为您在一个应用程序中拥有服务器端和客户端。
我使用以下handleSubmit
函数:
handleSubmit() {
const email = this.state.email;
fetch('/', {
method: 'POST',
body: email,
});
}
这是我的 server.js
文件,位于我的项目 /
中
const express = require('express')
const next = require('next')
const bodyParser = require('body-parser')
const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev })
const handle = app.getRequestHandler()
app.prepare()
.then(() => {
const server = express()
//parse application
server.use(bodyParser.urlencoded({ extended: false}))
//parse application/json
server.use(bodyParser.json())
server.post('/', (req, res) => {
console.log(req.body.email);
res.end("success!");
})
server.get('*', (req, res) => {
return handle(req, res)
})
server.listen(3000, (err) => {
if (err) throw err
console.log('> Ready on http://localhost:3000')
})
})
.catch((ex) => {
console.error(ex.stack)
process.exit(1)
})
当 handleSubmit
函数为 运行 时,我从服务器控制台得到以下输出:
Cannot read property 'email' of undefined
我的错误到底在哪里?
我在节点 JS 环境中的经验很少。如果您能告诉我具体的解决方案,我将不胜感激。感谢您的回复。
看来您必须解析 header 和 JSON.stringify 电子邮件。
fetch('/', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({email:email}),
}).then((res)=> console.log('Worked'))
我尝试将数据从我的客户端发送到我的服务器。为此,我将 React 与 NextJS 结合使用,因为您在一个应用程序中拥有服务器端和客户端。
我使用以下handleSubmit
函数:
handleSubmit() {
const email = this.state.email;
fetch('/', {
method: 'POST',
body: email,
});
}
这是我的 server.js
文件,位于我的项目 /
中
const express = require('express')
const next = require('next')
const bodyParser = require('body-parser')
const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev })
const handle = app.getRequestHandler()
app.prepare()
.then(() => {
const server = express()
//parse application
server.use(bodyParser.urlencoded({ extended: false}))
//parse application/json
server.use(bodyParser.json())
server.post('/', (req, res) => {
console.log(req.body.email);
res.end("success!");
})
server.get('*', (req, res) => {
return handle(req, res)
})
server.listen(3000, (err) => {
if (err) throw err
console.log('> Ready on http://localhost:3000')
})
})
.catch((ex) => {
console.error(ex.stack)
process.exit(1)
})
当 handleSubmit
函数为 运行 时,我从服务器控制台得到以下输出:
Cannot read property 'email' of undefined
我的错误到底在哪里? 我在节点 JS 环境中的经验很少。如果您能告诉我具体的解决方案,我将不胜感激。感谢您的回复。
看来您必须解析 header 和 JSON.stringify 电子邮件。
fetch('/', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({email:email}),
}).then((res)=> console.log('Worked'))