在我的 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 c
和 var 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/