服务器上的节点 JS 504 错误,但在本地主机上工作

Posted

技术标签:

【中文标题】服务器上的节点 JS 504 错误,但在本地主机上工作【英文标题】:NODE JS 504 error on server, but works on localhost 【发布时间】:2020-01-17 17:12:14 【问题描述】:

我试图简单地获取路线中照片的位置并渲染 product.ejs 文件:

 //Show individual product info
router.get('/product/:id', async function(req, res, next) 
  let filesFromFolder;

  Promise.all([
    database.retreaveImage(req.params.id)
  ]).then(resultArr => 
    filesFromFolder = resultArr[0];


    res.render('product.ejs', 
      productName: req.params.id,
      data: filesFromFolder

    );
  );
);

它可以在本地主机上运行,​​现在我将我的 route.js 文件导入到真实服务器中,当我尝试打开产品时,它会抛出 504 错误。

尝试按照此说明进行操作,但没有帮助。

Getting 504 GATEWAY_TIMEOUT NodeJs

grep -i "504" /var/log/nginx/access.log

82.135.208.60 - - [16/Sep/2019:07:52:25 +0000] "GET /product/line_fan_pool HTTP/1.1" 504 594 "http://13.58.120.242:3000/horizontal" "Mozilla/5.0 (Windows NT 10.0; Win64 ; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/76.0.3809.132 Safari/537.36" 82.135.208.60 - - [16/Sep/2019:08:03:15 +0000] "GET /product/line_pool HTTP/1.1" 504 594 "http://13.58.120.242:3000/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36" 82.135.208.60 - - [16/Sep/2019:08:10:19 +0000] "GET /product/line_pool HTTP/1.1" 504 594 "http://13.58.120.242:3000/" "Mozilla/5.0 (Linux; android 6.0; Nexus 5Build/ MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Mobile Safari/537.36"

【问题讨论】:

这是在 nginx 代理后面吗?代理对此有何看法?您在日志中看到任何内容吗?另外,您能否测试一些不需要数据库访问权限的站点以缩小可能的原因? 其他网站运行良好,只有这个会抛出 504。我用更多信息更新了问题 【参考方案1】:

问题是,亚马逊网络服务器不支持旧版本的 mysql,所以我不得不更新它。这解决了我的问题。必须在 pm2 监控中查看错误。

【讨论】:

【参考方案2】:

当我的http-proxy-middleware 内部发生故障时,我在节点expressjs 应用程序中遇到了504

这是一个未捕获的 Promise 错误,因此服务器静默超时进入 504,而不是报告错误。

因此,永远不要忘记在 Promise 掉落时抓住它们。 (这就是这里发生的事情吗?)

 //Show individual product info
router.get('/product/:id', async function(req, res, next) 
  let filesFromFolder;

  Promise.all([
    database.retreaveImage(req.params.id)
  ]).then(resultArr => 
     //...
  ).catch(err => next); // catch and burn.
);

【讨论】:

以上是关于服务器上的节点 JS 504 错误,但在本地主机上工作的主要内容,如果未能解决你的问题,请参考以下文章

Instagram api 在本地主机上工作正常,但在服务器上发送错误 (https://www.instagram.com/$name/?__a=1)

AWS RDS SQL 数据库在本地主机上工作——从服务器抛出错误

Datatables 插件在本地主机上工作正常,但在服务器(CPanel)上不工作

Laravel 5.2 session flash 在本地主机上工作但在服务器上不工作?

连接 Facebook Graph API 时 ElasticBeanstalk for PHP 上的 504 网关超时

Dropzone 在本地主机上正常工作,在远程服务器上引发错误