node.js - 每当在 app.get 回调中调用 fs 时,Express.JS 服务器都会给出 'Internal Error' 消息

标签 node.js express

在我的 Express.JS/Node.JS 服务器(在 openshift 上运行)中,每当执行 app.get("*", callback) 回调函数时,如果该函数包含对fs,它不是提供我的数据,而是提供“内部错误” 错误。我查了一下我的症状,没有找到解决办法。我的代码[排除某些部分]如下:

--> THE REQUIRE STATEMENTS <--
var app = require('express')();
var http = require('http').Server(app);
var fs = require('fs');
var path = require('path');

--> THE APP.GET AND METHODS IT USES <--
var verify_file = function(file) {
    while (fs.lstatSync(file).isDirectory()) {
        file = path.join(file, "index.html");
    }
    if (fs.existsSync(file)) {
        if(path.normalize(file).split(path.sep).indexOf(".." > -1)) {
            return 'public_html/e/denied.html';
        } else {
            return path.normalize(file);
        }
    } else {
        return 'public_html/e/missing.html';
    }
}
app.get("*", function(req, res){
    var p = verify_file(path.join('/public_html/' + req.originalUrl));
    var c = fs.readFileSync(p);
    res.send("This should show if it works");
});

每当我注释掉 var cvar p 引用时,就会调用 res.send 并且我会看到结果。 包含此脚本的目录包含 public_html 目录,其中包含 index.html 文件。 我的预期行为是在加载页面时显示“这应该显示它是否有效”,并且没有关于 fs 的错误。

最佳答案

更有可能的是,您正在使用的同步 fs 方法之一正在引发异常,而 Express 正在为您捕获该异常。尝试使用 try-catch 包装同步 fs 方法调用,以便您可以根据需要处理错误。

关于node.js - 每当在 app.get 回调中调用 fs 时,Express.JS 服务器都会给出 'Internal Error' 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26725276/

相关文章:

xcode - xcode 找不到咖啡编译器?

javascript - Passport - TypeError : passport. 验证不是一个函数

node.js - 在kue中添加新作业时,有没有办法避免重复?

node.js - 如何通过 sudo 在生产模式下运行 node.js Express?

node.js - 使用express-jwt 仅保护部分路由

node.js - 在 Express 中的 session 中传递变量信息

node.js - Assets 文件夹中的文件未在子页面中加载

javascript - 使用 webpack 编译时无法刷新生产中的页面

node.js - aws-amplify auth currentSession 不返回当前用户

android - 向 Bluemix 部署的 Node.js 应用程序发送 httppost 请求时出现 "Unfortunately app has stopped"错误