0

当我点击 /:uid 端点时,我正在编写一个无服务器 netlify 函数,它向我显示此错误消息n is not a function,但是当我点击 / 端点时,它不会引发错误。请帮我解决一下这个。

src/api.js 文件代码

const express = require("express");
const cors = require("cors");
const fetch = require("node-fetch");
const helmet = require("helmet");
const serverless = require("serverless-http");

if (process.env.NODE_ENV !== "production") {
  require("dotenv").config();
}

const app = express();
const router = express.Router();
app.use(cors());
app.use(helmet());

const fetchWithToken = (endpoint, method = "GET") => {
  return fetch(`${process.env.API_BASE_URL}${endpoint}`, {
    method,
    headers: {
      Authorization: `token ${process.env.TOKEN}`,
    },
  });
};

router.get("/", (req, res) => {
  res.send("JDKJKFJ");
});

router.get("/:uid", async (req, res) => {
  try {
    const data = await fetchWithToken(`/${req.params.uid}`, "GET");
    res.status(200).json(data);
  } catch (error) {
    console.log(error.message);
    res.status(500).json({ error });
  }
});

app.use("/.netlify/functions/api", router);

module.exports.handler = serverless(app);

错误信息

TypeError: n is not a function
    at /Users/rishipurwar/codingspace-proxy-server/functions/api.js:159:3133
    at /Users/rishipurwar/codingspace-proxy-server/functions/api.js:159:3232
    at o.handle_request (/Users/rishipurwar/codingspace-proxy-server/functions/api.js:120:783)
    at o (/Users/rishipurwar/codingspace-proxy-server/functions/api.js:113:879)
    at d.dispatch (/Users/rishipurwar/codingspace-proxy-server/functions/api.js:113:901)
    at o.handle_request (/Users/rishipurwar/codingspace-proxy-server/functions/api.js:120:783)
    at /Users/rishipurwar/codingspace-proxy-server/functions/api.js:106:2533
    at f (/Users/rishipurwar/codingspace-proxy-server/functions/api.js:106:3502)
    at f (/Users/rishipurwar/codingspace-proxy-server/functions/api.js:106:3696)
    at Function.v.process_params (/Users/rishipurwar/codingspace-proxy-server/functions/api.js:106:3839)
    at g (/Users/rishipurwar/codingspace-proxy-server/functions/api.js:106:2476)
    at Function.v.handle (/Users/rishipurwar/codingspace-proxy-server/functions/api.js:106:3340)
    at p (/Users/rishipurwar/codingspace-proxy-server/functions/api.js:106:238)
    at o.handle_request (/Users/rishipurwar/codingspace-proxy-server/functions/api.js:120:783)
    at /Users/rishipurwar/codingspace-proxy-server/functions/api.js:106:2905
    at /Users/rishipurwar/codingspace-proxy-server/functions/api.js:106:2927
Response with status 500 in 57 ms.
4

1 回答 1

0

您需要添加.json()到 fetch 的返回值:

try {
    let data = await fetchWithToken(`/${req.params.uid}`, "GET");
    data = await data.json()
    res.status(200).json(data);
  } catch (error) {
    console.log(error.message);
    res.status(500).json({ error });
  }
于 2021-11-01T15:12:56.447 回答