【问题标题】:Can't send file using res.sendFile to OpenShift无法使用 res.sendFile 将文件发送到 OpenShift
【发布时间】:2016-03-27 17:21:49
【问题描述】:

我正在尝试在NodeJS 服务器中使用express 发送文件。在本地主机上它可以工作,但是当我将我的应用程序推送到 OpenShift 时,我有一个错误:Internal Server Error

代码:

var path = require('path');
app.get('/load', function(req, res) {
    //res.send("TRY");
    res.sendFile(path.resolve('bg95.png'));
});

如果我尝试发送简单的文本,没关系。那么,问题可能出在哪里以及如何解决呢?

【问题讨论】:

  • 您确定bg95.png 与您的脚本在同一目录中吗?
  • 如果在路由处理程序之后添加 Express 错误处理程序(例如 app.use(function(err, req, res, next) { console.log(err.stack); next(err); }),错误说明了什么?
  • @mscdex 没有错误...控制台中一切正常。

标签: javascript node.js openshift


【解决方案1】:

这个问题很可能是因为您在不同的工作目录中运行。 path.resolve 将使用当前工作目录,除非您提供 from 参数。尝试替换:

res.sendFile(path.resolve('bg95.png'));

res.sendFile(path.join(__dirname, 'bg95.png'));

【讨论】:

    【解决方案2】:

    我遇到了类似的问题,我的项目文件夹中有一个示例 index.html 文件。我试过res.sendFile('./dashboard.html')res.sendFile('./app-root/repo/dashboard.html')等,但都没有奏效。 确保您的 express 版本是 v4.8.0 或更高版本。然后我找到了下面提到的链接,并使用了

    res.sendFile(path.join(__dirname + '/index.html'));

    where __dirname,我相信它为我们提供了 OpenShift 的工作路径文件夹。这有助于我显示页面。

    https://scotch.io/tutorials/use-expressjs-to-deliver-html-files

    查看此链接。关于如何使用它的简单演示,如果您遵循它,您将能够使其工作。 ;)

    【讨论】:

      【解决方案3】:

      您应该在依赖项中更新 express 版本。像这样:

        "dependencies": {
          "express": "4.10.2",
          "socket.io": "1.3.7"
        }
      

      似乎问题出在 express 版本上,它不支持 sendFile。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-26
        • 1970-01-01
        • 1970-01-01
        • 2020-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多