如何诊断/调试 nodejs/expressjs 的 500 内部服务器错误?

Posted

技术标签:

【中文标题】如何诊断/调试 nodejs/expressjs 的 500 内部服务器错误?【英文标题】:How do I diagnose/debug a 500 internal server error for nodejs/expressjs? 【发布时间】:2019-08-28 05:36:11 【问题描述】:

所以要从 html 表单发布数据以表达 js 服务器,我不断收到内部服务器错误 500。它没有说明原因,只是打印 POST /routeitisreaching 500

我该如何找出导致问题的原因?它甚至没有到达那条路线,因为在路线代码执行时我有一个 console.log 并且没有运行。

这是我发布的问题Internal Error 500 at POST request Express JS and Formidable

是否有一个日志文件保存在 Windows 中的某个位置,我可以在其中查看从表单提交到后端发生的情况的详细信息?我真的被卡住了,需要帮助。

【问题讨论】:

您找到解决方案了吗?我的应用程序已经开始这样做了,我完全不知道为什么! 将您的代码截图收件箱我会帮助您。已经有一段时间我忘记了我在这篇文章中做了什么。 @乔治 非常感谢您的回复并提供帮助,@mysamza。我实际上认为我解决了这个问题;我只是不太明白怎么做。我将那条特定路线在列表中向上移动,它开始工作。我知道列表中的最后一条路线有点像“全部”,但它们必须按字母顺序或类似的顺序吗? 【参考方案1】:

也许会有所帮助https://expressjs.com/en/guide/debugging.html

您还可以尝试注释代码片段并检查服务器是否响应。

【讨论】:

问题是我无法切片代码,因为 POST 请求甚至没有到达路由。我一开始就有一个console.log。 router.post('/upload', function(req, res)console.log("we enter this route"));无论如何,我会查看您发布的链接。谢谢。【参考方案2】:

好吧,我遇到了同样的问题,终端没有给出任何错误消息。所以这是我们可以做的

在你的 app.js(主文件)的末尾写下以下代码

app.use(function (err, req, res, next) 
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : ;

  // render the error page
  console.error(err);
  res.status(err.status || 500);
  res.render('error', 
    message: err.message,
    error: err
  );
);

然后在views文件夹下新建一个文件error.ejs。在 /views/error.ejs 中写入

There was some error
<pre>
<%= message; %>
<br>
<br>
<br>
<%= error; %>

您现在应该会看到有关您的错误的更多详细信息。我帮我调试了很多 500 个错误。希望这对其他人也有帮助

【讨论】:

我试过这个,但无法让它做任何事情/没有得到任何结果...... @BeninCA 如果出现 500 错误,该页面预计会显示错误。它没有向您显示任何内容吗? 对;但也许我的配置只是不同。

以上是关于如何诊断/调试 nodejs/expressjs 的 500 内部服务器错误?的主要内容,如果未能解决你的问题,请参考以下文章

刷新页面显示找不到文件错误如何使用 [angular js + NodeJS/ExpressJS] 解决

NodeJS ExpressJS - 如何记录生产服务器的错误?

NodeJs + ExpressJs 应用程序路由奇怪的行为

使用 nodejs 和 expressjs 的 flash 套接字策略

从 Angular/NodeJS/ExpressJS 向 3rd 方 URL 的 POST 请求

使用async/await——Nodejs+ExpressJs+Babel