404 Ошибка при выполнении запроса POST с использованием fetch () - PullRequest
0 голосов
/ 26 января 2020

Я следую этому руководству от Hakernoon , чтобы настроить Node.js с MySQL, используя мою машину в качестве локального сервера. Я использую несколько разных инструментов, но они не кажутся проблемой. Я использую:

  • Ubuntu 16.04
  • Node.js
  • MySQL Верстак (он использует Homebrew, потому что его Ма c)
  • MySQL
  • knex. js
  • Express

* (Ubuntu и Workbench - единственные различия)

Подводя итог, весь урок работает хорошо, за исключением случаев, когда я дохожу до части «Логин». Здесь мы создаем форму для ввода имени пользователя и пароля, делая запросы POST. Затем, если все в порядке, возвращается 200 status, в противном случае отображается сообщение о том, что вход не выполнен. А вот и проблемы. Каждый раз, когда я пытаюсь войти в систему (даже если я уверен, что учетные данные верны и зная, что этот пользователь хранится в базе данных), он сообщает мне, что вход не выполнен.

При проверке в инструменте проверки браузера он показывает Fail to load resources: the server responded with a status of 404 (Not found). Это также указывает на то, что проблема заключается в функции fetch(), которую я использую в своей функции post для выполнения запросов POST.

Я проверил документацию по fetch(), но это не дает особых разъяснений. , Также я попытался связаться с автором учебника, и я не получил ответа. Что я делаю не так с fetch, чтобы дать мне статус 404?

Кроме того, каждый раз, когда я создаю нового пользователя (также запрос POST), он делает это без проблем, и я вижу его в база данных в MySQLWorkbench.

Это файл (приложение. js) с кодом для создания пользователей и логин:

const CreateUser = document.querySelector('.CreateUser')
CreateUser.addEventListener('submit', (e) => {
    e.preventDefault()
    const username = CreateUser.querySelector('.username').value
    const password = CreateUser.querySelector('.password').value
    post('/createUser', { username, password })
})

const Login = document.querySelector('.Login')

Login.addEventListener('submit', (e) => {
    e.preventDefault();
    const username = Login.querySelector('.username').value
    const password = Login.querySelector('.password').value

    post('/login', {username, password})
        .then(({status}) => {
            if(status === 200)
                alert('login success')
            else 
                alert('login failed')
        })
})

function post (path, data) {
    return window.fetch(path, {   <========= Here is where the browser shows the problem
        method: 'POST',
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(data)
    })
}

*** Я не публикую остальные код, чтобы не сделать его слишком длинным, если нужна дополнительная информация, дайте мне знать). Спасибо!

...