2011-08-23 65 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文檔。