如何使用正确的模仿类型而不是文本/纯文本来提供JSON文件?

时间:2019-11-20 18:48:11

标签: node.js json express nginx mime-types

我正在尝试使用manifest.json文件,如果类型未设置为application / json,该文件将无法工作。

我有一台运行node / express的nginx服务器。

我将manifest.json放在我的公用文件夹中,服务器将其读取为text / plain类型,并引发错误。

/etc/nginx/config/下,已经有一行显示:

application/json                      json;

我什至尝试通过express为文件提供服务并指定标题:

var manifest = fs.readFileSync('routes/manifest.json', 'utf8');
router.get('/manifest.json', function(req, res) {
    res.header("Content-Type", 'application/json');
    res.json(manifest);
});

并且仍然将其读取为文本/纯文本。

我猜想这是我需要使用nginx进行的操作,但是我发现的所有建议都在谈论我没有的文件。

1 个答案:

答案 0 :(得分:0)

fs模块读取您现有的manifest.json文件时,会将其转换为一个大的utf-8字符串,而不是实际的JSON。

在人眼中,它看起来像普通的JSON,但实际上只是字符串中的一堆JSON。

在服务器上,它只是看到该字符串,并按照技术上的要求将其mime类型设置为text / plain即可。

您可以尝试将res.json(manifest);替换为res.send(JSON.stringify(manifest));,该变量应采用fs从manifest.json获取的值,并尝试将其转换为具有正确mime类型的正确格式的JSON。