在node.js中使用require()的奇怪JSON解析错误

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (178)

我有以下JSON:

{
   "request" : {
      "language" : "en",
      "title" : "placeholder",
      "year" : "2014"
   }
}

我正在尝试使用以下代码解析:

var json = require('../filename);

奇怪的是,我收到了SyntaxError

/home/username/code/filename:2
   "request" : {
             ^
SyntaxError: Unexpected token :
(...)

根据JSONLint,JSON完全有效。我错过了很明显的东西吗?

提问于
用户回答回答于

这听起来像你制作了一个.js文件而不是.json文件。 因此,它被解析为Javascript,而不是JSON。

用户回答回答于

require()不应该用于加载JSON文件。它仅用于加载node.js模块,而不是数据。根据扩展名加载数据实际上已被弃用(请参阅有关require.extensions的无数讨论)。

所以加载JSON的正确方法是这样的:

JSON.parse(require('fs').readFileSync(__dirname + '/filename', 'utf8'))

扫码关注云+社区

领取腾讯云代金券