只要在app.get回调中调用fs,Express.JS服务器就会给出“内部错误”消息

时间:2014-11-03 23:38:02

标签: node.js express

在我的Express.JS / Node.JS服务器(在openshift上运行)中,每当执行app.get("*", callback)回调函数时,如果函数包含对fs的任何引用,而不是提供我的数据,它将提供{ {1}}错误。我已经查找了我的症状,但没有找到解决办法。我的代码[某些部分除外]如下:

'Internal Error'

每当我同时注释掉--> 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 c引用时,会调用res.send,我会看到结果。 包含此脚本的目录包含var p目录,其中包含public_html文件。 我的预期行为是“加载页面时显示它是否有效”,并且没有关于fs的错误。

1 个答案:

答案 0 :(得分:1)

更有可能的是,您使用的同步fs方法之一是抛出异常而Express正在为您捕获它。尝试使用try-catch包装同步fs方法调用,以便您可以随意处理错误。