【发布时间】:2018-09-09 21:56:56
【问题描述】:
这里的相对初学者,我遇到了 express 和 async/await 函数的问题,以及未处理的 Promise 拒绝。
这是我在客户端的代码,从页面中获取用户名和密码并将其发送过来。
async function signIn() {
let username = document.getElementById('username').value
let password = document.getElementById('password').value
let url = '/api/login'
url += '?username=' + username
url += '&password=' + password
const response = await fetch(url)
console.log(response)
}
这是我对应的服务器函数:
app.post('/api/login', function (req, res) {
console.log("I'll log you in")
}
在那之后有一些代码确实会登录,但这就是我创建我遇到的错误所需要的全部内容。
这是我在 safari 11.03 中遇到的错误:
Unhandled Promise Rejection: TypeError: Type error
这是 Firefox 59.0.1 中的错误:
TypeError: NetworkError when attempting to fetch resource.
我希望有人可以在这里帮助我。
谢谢。
【问题讨论】:
-
您的
fetch是否返回了 Promise?它应该让await工作developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… -
您正在使用您的快速代码定义“POST”方法,但我猜
fetch默认使用“GET”。也许尝试将app.post(...更改为app.get(...看看是否有结果。您是否在服务器日志中看到控制台“我会让您登录”? -
无论我使用 app.get 还是 app.post,我都会得到相同的结果,而且我没有在我的服务器日志上看到“我会让你登录”????
标签: javascript express ecmascript-6 async-await fetch-api