我希望你能帮助我:
我的localhost中有一个API作为我的前端和数据库之间的桥梁。
我在前端服务器中使用Express。当我提交表单时,数据将被放置在数据库中,我的API会按照我的预期发送响应,但是express不会收到任何内容并使状态保持挂起状态(几分钟后我的浏览器拒绝响应):
这是我使用express的代码(ClientApi是我在localhost中运行的自定义API的实例):
lisaApp.post('/signup', (req, res) => {
const validationResult = validateSignupForm(req.body);
if (!validationResult.success) {
return res.status(400).json({
success: false,
message: validationResult.message,
errors: validationResult.errors
});
}
var newClient = req.body
newClient.clientemailname = newClient.userclient
newClient.client_id = uuid.v4()
delete newClient.confirmPassword
ClientApi.saveClient(newClient, function (err, usr) {
if (err) return res.status(500).send(err.message)
console.log('entro')
res.redirect('/')
});
});
这是我的API的功能,它返回我期望的响应(请参阅我使用Access-Control-Allow-Origin设置我的标题):
hash.set('POST /', async function saveClient (req, res, params) {
let client = await json(req)
if (!db.connected) {
await db.connect()
}
let createdClient = await db.saveClient(client)
delete createdClient.clientemailname
delete createdClient.password
await db.disconnect()
res.setHeader('Access-Control-Allow-Origin', '*')
send(res, 201, createdClient)
})
通过表单发送数据后,这是我的浏览器显示的错误 我:
Failed to load resource: net::ERR_EMPTY_RESPONSE
Uncaught (in promise) TypeError: Cannot read property 'data' of undefined
at app.js:18952
答案 0 :(得分:0)
在hash.set('POST /', async function saveClient (req, res, params)
定义中, res 对象上没有调用发送(< 参数>)方法/函数。
如果你专门定义了send(&lt; arguments here &gt;)方法/函数,请确保它调用 res.end (&lt; arguments here < / em>&gt;)或 res.write (&lt; 参数在这里&gt;)后跟 res.end (&lt; 这里的论点&gt;)。
如果不需要专用发送(&lt; arguments here &gt;)方法/函数,那么在我看来,您可能需要调用res.end(&lt; 参数)这里&GT)或res.write(小于这里参数&GT;),接着res.end(小于这里参数&GT)代替发送(&lt; 参数在这里&gt;)方法/功能。