【问题标题】:Getting an error message n is not a function获取错误消息 n 不是函数
【发布时间】:2021-12-16 05:42:26
【问题描述】:

当我点击 /: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.

【问题讨论】:

标签: node.js netlify netlify-function


【解决方案1】:

您需要将.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 });
  }

【讨论】:

  • 仍然收到同样的错误信息
  • 我不知道为什么我也无法访问 api.js 文件中的 env
  • @RishiPurwar 我刚刚检查了你的仓库,我看到你正在使用 netlify-lambda 来运行你的程序。我认为解决方案是改变您使用环境变量的方式,您可以查看此Github issue answer 的详细指南
  • 你能写出正确的答案吗?以便将来对某人有所帮助
  • 如果我直接使用值而不是使用环境变量。仍然,它向我显示了一个错误。
猜你喜欢
  • 2020-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-12
  • 2018-09-06
  • 2016-10-23
相关资源
最近更新 更多