javascript 如何使用Astro从自己的服务器获取数据?

aydmsdu9  于 2023-05-16  发布在  Java
关注(0)|答案(1)|浏览(177)

我已经用Express创建了一个NodeJS服务器,用Astro创建了一个前端,配置了用于NodeJS的Astro适配器。
现在,我正在尝试从后端获取数据,但我不知道如何做到这一点。
下面是前端的fetch请求:

---
let name = "Javi";

const handleContent = async () => {
  try {
    const response = await fetch("http://127.0.0.1:3000/api/astro/", {
      headers: {
        Accept: "application/json",
      },
    });
    console.log(await response.text());
    const data = await response.json();
    console.log(data);
    name = data.name;
    return data;
  } catch (error) {
    console.log(error);
  }
};
handleContent();
---

无论出于何种原因,它都找不到端点,并返回一个错误:Not found TypeError: Body is unusable at specConsumeBody (node:internal/deps/undici/undici:6539:15)
以下是我的Express服务器:

import express from "express";
import { dirname, join } from "path";
import { fileURLToPath } from "url";
import cors from "cors";
import { handler as ssrHandler } from "./astro/dist/server/entry.mjs";

const PORT = process.env.PORT || 8001;
const app = express();
const __dirname = dirname(fileURLToPath(import.meta.url));

app.use(express.static(join(__dirname, "astro", "dist", "client")));
app.use(cors());
app.use(express.json());
app.use(ssrHandler);

app.get("/api/astro", (req, res) => {
  console.log("accessing api");
  res.json({ name: "Pepe" });
});

在开发应用程序时,有没有从后端获取数据的解决方案?

5m1hhzi4

5m1hhzi41#

我试着复制这个,似乎你不能在响应上用.text().json()请求两次。
我用astro做了同样的事情:

---
import Layout from "../../components/layouts/Layout.astro";

const res = await fetch('http://localhost:5243/api/v1/Test')

// these two is causing the errors.
console.log(await res.text())
const data = await res.json();

---

<Layout title="Test Page">
<p>{data.message}</p>
</Layout>

而当你试图删除(或评论我猜).text().json(),它将获取数据罚款现在。

相关问题