无法从本地 nodejs 服务器获取

时间:2021-02-24 09:34:16

标签: javascript node.js reactjs express

我显然尝试从本地 nodejs 服务器获取数据,但出现了奇怪的错误。这是带有 express 的简单服务器

let express = require('express')
let server = express()
server.listen(3100)
server.get("/", (req, res) => {
res.send("hello") })

这是我反应中的代码。我只在 useEffect 中使用它

fetch('http://localhost:3100/', {
        headers: 'Access-Control-Allow-Origin',
        method: "GET"
    })
        .then(res => res.json())
        .then(response => {
            console.log(response)
        })
        .catch(err => console.log(err))

我遇到了这个错误

Uncaught (in promise) TypeError: Failed to execute 'fetch' on 'Window': The provided value is not of type '(sequence<sequence<ByteString>> or record<ByteString, ByteString>)'

我不知道为什么会发生这种情况,我环顾了互联网,但仍然没有得到解决方案。感谢您的任何建议!

2 个答案:

答案 0 :(得分:1)

错误是因为 headers 的值不能是字符串。

它应该是一个普通对象(或一个 Headers 实例),其中每个属性是一个标题名称,关联的值是标题值。 (Source)

headers: {
    "X-Example-Request-Header": "Example value"
}

在这种特殊情况下,您根本不应设置 headersAccess-Control-Allow-Origin响应 标头,而不是请求标头。将其添加到请求中只会导致问题。

请参阅 this question 以进一步阅读该主题,并参阅 cors middleware 将 CORS 权限添加到您的 Express 服务器。

答案 1 :(得分:-1)

您需要添加一个不是 string 类型的标题,它应该是 Header 类型

fetch(' URL ... ',
{
method: "GET",
    headers: new Headers({
        Accept: 'application/json',
        'Content-Type': 'multipart/form-data'
    }),
    body: formData
}