【问题标题】:Pass json file to client using Express routes使用 Express 路由将 json 文件传递​​给客户端
【发布时间】:2017-09-11 16:57:39
【问题描述】:

我正在尝试向客户端发送一个 json 文件,但我没有这样做。我收到内部错误 (500)。有人可以帮我吗?另外,我使用 Handlebars 作为视图引擎。

app.js:

[...]
var APIconditions = {};
var APIhourly = {};

function getWeatherData() {
    var data = ['/conditionsWU.json', '/hourlyWU.json'];
    request(data[0], function(err, res, body) {
        if (!err && res.statusCode == 200) {
            APIconditions = JSON.parse(body);
        }
    });
    request(data[1], function(err, res, body) {
        if (!err && res.statusCode == 200) {
            APIhourly = JSON.parse(body);
        }
    });
}
[...]

index.js:

[...]
router.get('/conditions' , function(req, res, next) {
    res.json(APIconditions);
});

router.get('/hourly' , function(req, res, next) {
    res.json(APIhourly);
});
[...]

client.js:

[...]
function getWeather() {
    var APIconditions = 'conditions';
    var APIhourly = 'hourly';

$.getJSON(APIconditions, function (data) {
    [...]
});
$.getJSON(APIhourly, function (data) {
        [...]
    });
[...]

【问题讨论】:

  • 你在 nodeJS 控制台中遇到错误吗?好像你有未处理的异常
  • 另外,您是否从app.js 导出并需要对象?我想知道您的错误是否是 APIconditionsAPIhourly 在 index.js 中未定义
  • @OmriLuzon 是的,我可能有未处理的异常。目前,我只是使用 Express Generator 提供的骨架。 “导出和需要对象”是什么意思?我该怎么做? global.APIconditions 似乎不起作用。
  • @OmriLuzon 已经解决了。请参阅下面的答案。感谢您的帮助:)

标签: javascript json express handlebars.js


【解决方案1】:

如果不指定,您将无法从另一个文件访问 APIconditionsAPIhourly

最简单的解决方案是将它们附加到全局范围,这样您就可以从任何地方访问它们。

global.APIconditions = {}
global.APIhourly = {}

【讨论】:

  • 感谢您的回复。我试过这个。我不再收到任何错误。但是,客户端中的对象是空的。我错过了什么? :(
  • @Zarif 很难说。确保调用getWeatherData() 并尝试查找数据“消失”的位置。 (它们在 index.js 文件中是空的吗?)。而不是只写!err 将错误记录到控制台。为了帮助我,我需要尽可能多的信息。
  • 我将错误记录到控制台。显然,/conditionsWU.json 不是正确的 URI。我通过使用fs.readFile() 而不是request() 来修复它。感谢您的帮助!
猜你喜欢
  • 2013-01-30
  • 1970-01-01
  • 1970-01-01
  • 2018-08-13
  • 1970-01-01
  • 1970-01-01
  • 2018-04-29
  • 1970-01-01
  • 2017-04-02
相关资源
最近更新 更多