当前位置: 首页 > 知识库问答 >
问题:

范围错误:已超出最大调用堆栈大小。为什么?

松安民
2023-03-14
    const http = require('http');
const fs = require('fs');
const url = require('url');
const hostname = 'xxxx';
const port = xxxx;


const server = http.createServer((req, res) => {
    let parsedUrl = url.parse(req.url, true);
    var qdata = parsedUrl.query;
    let n = parseInt(qdata.n);
    console.log(n);
    if (n <= 0) {
        res.writeHeader(500, {
            'Content-Type': 'text/plain',
        });
        res.write("Fuer n wurde kein gueltiger Parameter uebergeben!");
    }
    else {
        res.writeHeader(200, {
            'Content-Type': 'text/plain',
        });
        function fibonacci(num) {
  if (num <= 1) return 1;

  return fibonacci(num - 1) + fibonacci(num - 2);
}
        res.write("Die " + n + "-te Fibonacci Zahl lautet " + fibonacci(n));
    }


    res.end();
});

server.listen(port, hostname, () => {
    console.log(`Server running at http://${hostname}:${port}/`);
});

如果我运行此代码,我会收到错误RangeError:超出最大调用堆栈大小。但为什么呢?当我用9调用它时就发生了,斐波那契在这么小的数字下应该不是问题。

共有1个答案

单于庆
2023-03-14

这里有两个问题:1。让它运行,请按2。让它正常运行。

1.您错误地解析数据,导致let n=parseInt(qdata.n)返回未定义。回调是服务器启动后执行的函数。这意味着即使在输入数字之前,服务器也在运行斐波那契序列。

因为它已经在解析数据,所以它解析< code>n,当然,它是< code >未定义的。把它解析成一个Int,你得到< code>NaN。这是一个问题,因为< code>Nan-1或< code>Nan-2总是返回< code>Nan,这意味着您在服务器启动时进入无限状态。

要解决这个问题,您应该检查n是否存在:

if(String(n) !== String(NaN) {
  ...
}
 类似资料:
  • 我使用https://formidable.com/open-source/urql/用于从React Native中的GraphQL服务器获取数据。 该组件的实现方式如下: 运行应用程序时,查询按预期工作,我从GraphQL服务器接收数据。 但是,控制台会显示错误消息: 未处理的promise拒绝,[RangeError:超出最大调用堆栈大小。]在node_modules/core-js/内部/

  • 我刚刚开始使用角度2。所以我尝试使用Web服务从数据库显示类别。 这是我的论坛.服务.ts文件 forum.component.ts: forum.component.html: 请帮忙,先谢了

  • 索引.js Questionlist.jsx 问题.jsx Scorebox.jsx 结果. jsx

  • 我在react中工作,基本上我想做一个带工具提示的按钮,现在我正在做工具提示。我正在更改css显示属性,以使它在鼠标进入和离开时可见或不可见。但是有一个错误,我不知道该怎么办... 这是我的代码: 在控制台中,我收到了这个错误: 我找不到问题出在哪里。我知道这可能是关于调用一个函数,而这个函数又调用另一个函数。但是我在代码中看不到这样的东西,我不确定是否都是这样。谢谢帮助:)

  • 问题内容: 我正在使用Direct Web Remoting(DWR)JavaScript库文件,并且仅在Safari(台式机和iPad)中出现错误 它说 超出最大呼叫堆栈大小。 该错误的确切含义是什么,它会完全停止处理吗? 也适用于浏览器的所有修复程序(实际上在上, JS:执行超出超时 我假设是相同的调用堆栈问题) 问题答案: 这意味着在代码的某处,你正在调用一个函数,该函数又调用另一个函数,依

  • 我在玩React,我得到了我想要的功能,但是由于某个地方的无限循环,它非常慢。我相信它在组件生命周期方法中,但我不知道如何重新格式化下面的代码,使其具有相同的功能,但没有无限循环。任何关于最佳实践的建议都将不胜感激。