我正在尝试使用在单独的模块中创建的函数,该函数读取JSON文件(使用“ fs”)并在控制台和浏览器中显示其内容。我发现该代码在Express app.use块内时可以运行,但是如果它来自外部文件则无法运行,更糟糕的是,我没有收到任何错误。当我打印出我认为是控制台中函数内容的内容时,我收到的只是一个“未定义”。
在我的外部模块文件中:
var fs = require("fs");
exports.getData = function () {
var something;
fs.readFileSync("./TestFile.json", function (err, data) {
if (err) throw err
console.log(data.toString());
something = data.toString();
});
return something;
};
在我的主文件中,我有以下内容:
var fs = require("fs");
var mt = require("./ModelTest.js");
var express = require("express");
var app = express();
app.get('/', function (req, res) {
rs.send("Main Page")
})
app.use('/Works', function (req, res) {
//The contents of the file will display properly in the browser
fs.readFile("./TestFile.json", function (err, data) {
if (err) throw err;
res.send(data.toString());
});
});
app.use('/Fails', function (req, res) {
//Browser is blank, with no error in the console
res.send(mt.getData);
});
var server = app.listen(3000, function () {
console.log("Listening on port 3000");
})
如果在这里缺少概念性的内容,我深表歉意,因为我不熟悉NodeJS的异步功能。我了解异步函数需要根据需要进行回调和Promise,但我似乎无法弄清楚为什么相同的函数无法在单独的文件中工作。