У меня проблема с методом POST на моем веб-сайте. Он отлично работает при работе на локальном хосте, но при развертывании показывает ошибку статуса 404 - PullRequest
0 голосов
/ 01 августа 2020

У меня проблема с методом POST на моем веб-сайте. Он отлично работает при запуске на локальном хосте, но при развертывании на vercel он показывает ошибку состояния 404, когда я пытаюсь сделать запрос POST. Мой js код:

function CapturaParametrosUrl() {
  urlchat = window.location.href;
  let parametrosUrl;
  let res = urlchat.split('?');
  if (res[1] === undefined) {

  }
  if (res[1] !== undefined) {
    let parametros = res[1].split('&');
    parametrosUrl = parametros;
  }
  return parametrosUrl;
}

function validarLog(value) {
  if (value[0] === 'loro6995caga0120mousepad') {
    let x = document.getElementById('logTxt');
    x.style.display = 'block'
  }
}

window.onload = function() {
  CapturaParametrosUrl()
  let y = document.getElementById('send-message')
  if (CapturaParametrosUrl() === undefined) {

  } else {
    validarLog(CapturaParametrosUrl())
  }

  // document.querySelector('#send-message').onclick = function() {
  //     msg = document.querySelector('#input-text-chat').value;
  //     // appendDIV(msg)
  // }
}

function appendDIV(event) {
  // let repeat = event.length;
  console.log(event)
  const chatContainer = document.querySelector('.chat-output');
  const span = document.createElement('span');
  span.tabIndex = 0;
  span.classList.add("text-chat2");
  let a = event.log.replace(/-/g, '<br>');
  span.innerHTML = a;
  chatContainer.insertBefore(span, chatContainer.firstChild);
  // for(i = 0; i < repeat; i++){
  //     const chatContainer = document.querySelector('.chat-output');
  //     const span = document.createElement('span');
  //     span.tabIndex = 0;
  //     span.classList.add("text-chat2");
  //     let a = event[0].log.replace(/-/g,'<br>');
  //     span.innerHTML = a; 
  //     chatContainer.insertBefore(span, chatContainer.firstChild);
  //     event.shift();
  // }  
}

function ajax(config) {
  const xhr = new XMLHttpRequest()
  xhr.open(config.metodo, config.url, true)

  xhr.onload = e => {
    if (xhr.status === 200) {
      config.sucesso(xhr.response)
    } else if (xhr.status >= 400) {
      config.erro({
        codigo: xhr.status,
        texto: xhr.statusText
      })
    }
  }

  xhr.send()
}

ajax({
  url: "./js/dados.json",
  metodo: "get",
  sucesso(resposta) {
    const estados = JSON.parse(resposta)
    console.log(estados)
    appendDIV(estados)
  },
  erro(e) {
    const msg = document.createTextNode(`${e.codi}: ${e.texto}`)
    document.body.appendChild(msg)
  }
})

мой метод публикации

document.usuarioForm.onsubmit = async e => {
  e.preventDefault()

  const form = e.target
  const data = new FormData(form)
  data.append('ajax', true)

  const options = {
    method: form.method,
    body: new URLSearchParams(data)
  }

  const resultado = document.getElementById('resultado')

  try {
    const resp = await fetch(form.action, options)
    const json = await resp.json()
    console.log(resp)
    resultado.innerHTML = JSON.stringify(json)
  } catch (e) {
    // console.log(e)
    // resultado.innerHTML = e
  }
}

мой сервер. js

const bodyParser = require('body-parser')
const express = require('express')
const app = express()
const fs = require("fs")
const pathToJSONFile = 'js/dados.json';

app.use(express.static('.'))
app.use(bodyParser.urlencoded({
  extended: true
}))
app.use(bodyParser.json())

const multer = require('multer')

const storage = multer.diskStorage({
  destination: function(req, file, callback) {
    callback(null, './upload')
  },
  filename: function(req, file, callback) {
    callback(null, `${Date.now()}_${file.originalname}`)
  }
})

app.post('/formulario', (req, res) => {
  // Estou retornando isso pro front end
  console.log(req.body)
  res.send({
    ...req.body,
    id: 1
  })
  let myData = JSON.stringify(req.body)


  fs.writeFileSync(pathToJSONFile, myData); //default: 'utf8'

})

app.listen(3002, () => console.log('Executando...'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...