Esta es una pregunta de novato, pero soy nuevo en esto. Req.body no está definido. Lo intenté sin cuerpo-
analizador y con analizador de cuerpo, sigo obteniendo el mismo resultado Probé todas las soluciones
disponible en StackOverflow pero sigo obteniendo el mismo resultado.
Este es mi código del lado del cliente:
document.addEventListener("DOMContentLoaded", () => { document.getElementById('send').addEventListener('click', (e) => { var message = { name: document.getElementById('name').value, message: document.getElementById('message').value } postMessages(message) }) getMessages() }); function addMessages(message) { const ele = document.getElementById('messages') const h4 = document.createElement('h4') const p = document.createElement('p') h4.textContent = `${message.name}` p.textContent = `${message.message}` ele.append(h4, p) } function postMessages(message) { const Url = "http://localhost:3000/messages" fetch(Url, { method: 'POST', body: message, }) }Y este es mi código de NodeJs:
var express = require('express') var bodyParser = require('body-parser') var app = express() app.use(express.static(__dirname)) app.use(bodyParser.json()) app.use(bodyParser.urlencoded({ extended: false })) var messages = [ { name: "Tim", message: "Hi" }, { name: "Jane", message: "Hello" } ] app.post('/messages', (req, res) => { console.log(req.body) messages.push(req.body) res.sendStatus(200) })Debe cambiar su función de búsqueda y primero JSON. JSON.stringify su mensaje y luego agregar los encabezados correctos:
function postMessages(message) { const Url = "http://localhost:3000/messages" fetch(Url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(message), }) }