2011-08-23 66 views
146

我想在我的JavaScript代码中包含几个JSON文件,这些文件位于与我的JavaScript源文件相同的目录中。是否存在node.js中的json需求

如果我想包含另一个JavaScript文件,我可以简单地使用require。 现在我使用readFileSync__dirname来获取JSON,我认为这是一种丑陋的做法。

是否有类似的要求,使我可以加载JSON文件?

+0

看到这个类似的问题:http://stackoverflow.com/questions/4662851/how-do-you-import-non-node-js-files – holygeek

+0

@coen你说的“包括JSON文件”是什么意思?阅读并解析它?如果是,可能的重复:http://stackoverflow.com/questions/5726729/how-to-parse-json-using-nodejs –

+2

是的;阅读和解析。但是这是特别读取*文件*,类似于阅读js文件,所以这不是重复的,goatslacker的答案仍然有效。 – coen

回答

285

一个JSON文件作为节点的V0.5 .x是的,你可以像你需要一个js文件一样需要你的JSON。

var someObject = require('./somefile.json')

在ES6:

import someObject from ('./somefile.json')

+1

这是真的吗?它不适合我,并且https://github.com/joyent/node/issues/1357和https://github.com/joyent/node/pull/584建议它不应该。 – user161642

+0

这两张票是1岁和2岁。 JSON需求被添加到节点0.5中。 – goatslacker

+10

你需要使用require('./ somefile.json'),假定文件在同一个目录下(注意点和斜线)。 –

13

No.使用readFilereadFileSync(后者仅在启动时)。

或者使用像

现有的库或者写在一个js文件你的配置而不是像

module.exports = { 
    // json 
} 
+0

cjson也只处理绝对路径,对吗? – coen

+1

@coen是的,我们总是使用'__dirname'来创建相对路径。 – Raynos

+1

或'return {foo:'bar'}' – William

10

JSON文件不需要一个明确的出口声明。您不需要导出就可以将其用作Javascript文件。

因此,您可以使用require作为有效的JSON文档。