2011-08-23 19 views
146

Chciałbym dołączyć kilka plików JSON w moim kodzie JavaScript, które znajdują się w tym samym katalogu, co mój plik źródłowy JavaScript.jest wymagany json w pliku node.js

Gdybym chciał dołączyć inny plik JavaScript, mógłbym po prostu użyć require. Teraz używam readFileSync i __dirname, aby uzyskać JSON, co uważam za brzydki sposób na zrobienie tego.

Czy jest coś podobnego do wymagania, które pozwala mi załadować plik JSON?

+0

Zobacz podobne pytanie: http://stackoverflow.com/questions/4662851/how-do-you-import-non-node-js-files – holygeek

+0

@coen Co rozumiesz przez "dołączenie pliku JSON"? Przeczytaj i przeanalizuj to? Jeśli tak, możliwy duplikat: http://stackoverflow.com/questions/5726729/how-to-parse-json-using-nodejs –

+2

yes; czytaj i parsuj. Ale jest to szczególnie czytanie pliku *, podobnie jak czytanie pliku js, więc nie jest to duplikat i odpowiedź goatslackera jest nadal ważna. – coen

Odpowiedz

285

Począwszy od węzła v0.5 .x tak możesz wymagać swojego JSON tak, jak byś wymagał pliku js.

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

W ES6: Pliki

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

+1

Czy to prawda? To nie działa dla mnie, a https://github.com/joyent/node/issues/1357 i https://github.com/joyent/node/pull/584 sugerują, że nie powinno. – user161642

+0

te dwa bilety mają 1 i 2 lata. Wymaganie JSON zostało dodane w węźle 0.5. – goatslacker

+10

Musisz użyć require ("./ somefile.json") zakładając, że plik znajduje się w tym samym katalogu (zwróć uwagę na kropkę i ukośnik). –

13

Nie. Użyj albo readFile lub readFileSync (te ostatnie tylko przy uruchomieniu).

lub wykorzystać istniejącą bibliotekę jak

Alternatywnie napisać swój config w pliku js, a następnie plik json jak

module.exports = { 
    // json 
} 
+0

cjson obsługuje tylko ścieżki absolutne, czy mam rację? – coen

+1

@coen tak, zawsze używamy '__dirname' do tworzenia względnych ścieżek. – Raynos

+1

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

10

JSON nie wymagają wyraźnego oświadczenia eksportu. Nie musisz eksportować, aby użyć go jako plików Javascript.

Można zatem użyć tylko require dla prawidłowego dokumentu JSON.