当在app.getcallback中调用fs时,Express.JS服务器会给出“内部错误”消息

在我的Express.JS / Node.JS服务器(在openshift上运行)中,每当执行app.get("*", callback)callback函数时,如果函数包含对fs的引用,而不是服务我的数据,一个'Internal Error'错误。 我已经搜查了我的症状,并没有find解决办法。 我的代码[部分除外]如下:

 --> 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方法之一是抛出一个exception,Express正在为您捕捉。 尝试用try-catch包装你的同步fs方法调用,这样你就可以处理错误。