获取错误消息 n 不是函数

Posted

技术标签:

【中文标题】获取错误消息 n 不是函数【英文标题】:Getting an error message n is not a function 【发布时间】: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.

【问题讨论】:

你能分享堆栈跟踪吗? 你好,这里是回购链接:github.com/rishipurwar1/codingspace-proxy-server 我不知道什么是堆栈跟踪 你能发布完整的错误信息吗? 刚刚添加了错误信息,请检查 【参考方案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 的详细指南 你能写出正确的答案吗?以便将来对某人有所帮助 如果我直接使用值而不是使用环境变量。仍然,它向我显示了一个错误。

以上是关于获取错误消息 n 不是函数的主要内容,如果未能解决你的问题,请参考以下文章

从 mongoDB 和 Nodejs 获取数据:toArray 不是函数错误 [重复]

Rails - 从模型中获取不是验证错误的错误消息

AJAX:当函数调用失败/错误时,是不是可以从服务器端返回自定义错误消息? [复制]

等待消息中的消息反应等待反应,错误(message.react 不是函数)

如何将返回值(从前一个函数)读入熊猫,python?获取错误消息

prisma - 运行 graphql 查询时获取环境变量未找到错误消息