Es la primera vez que uso Express y MongoDB, creé mi servidor Node y lo conecté a mi base de datos mongoDB, pero cuando intento enviar una solicitud desde mi página html al servidor, aparece el método Error 405 no permitido, el siguiente es mi nodo código de servidor .js
mongoose.connect('mongodb://localhost/userdatabase' ,{ useNewUrlParser: true, useUnifiedTopology: true }) const app = express() app.use('/', express.static(path.join(__dirname, 'static'))) app.use(bodyParser.json()) const port = 5500 app.listen(port, () => { console.log(`server is up at ${port}`) }) app.post('/api/register', async(req, res) => { const {username, password} = req.body res.json({status: 'ok'}) try{ const response = await User.create({ username, password }) console.log('User created succesfully' , response) }catch(error){ console.log(error) } })y aquí está la función a la que intento llamar para hacer la solicitud de publicación
const form = document.querySelector('#register') form.addEventListener('submit', registerUser) async function registerUser(event){ event.preventDefault() const username = document.getElementById('username').value const password = document.getElementById('password').value const result = await fetch('/api/register', { method: 'POST', headers: { 'Content-Type' : 'application/json' }, body: JSON.stringify({ username, password }) }).then(res => res.json()) }básicamente estoy creando un sistema de inicio de sesión e intento registrar usuarios, pero por alguna razón sigo recibiendo el error 405 cuando intento llamar al servidor. Tenga en cuenta que por alguna razón funcionó 3 veces cuando lo intenté antes, no he cambiado casi nada en el código pero simplemente no funciona, ¿qué puede ser? gracias de antemano
Debe indicar en qué puerto se ejecutaría mongoDB.
const mongoose = require('mongoose'); main().catch(err => console.log(err)); async function main() { await mongoose.connect('mongodb://localhost:27017/test'); }Creo que debe declarar el servidor y el puerto mientras llama a axios. La llamada axios debería ser - await await fetch('localhost:5500/api/register') . Está buscando '/api/register' pero no encontró nada. Espero que esto resuelva tu problema.
Problema resuelto: el archivo html no estaba en la carpeta 'estática' 😅 probablemente lo moví y no me di cuenta, perdón por la pregunta, si alguien tiene el mismo problema, asegúrese de verificarlo