2012-10-03 31 views

cevap

25
var fs = require("fs"), 
    json; 

function readJsonFileSync(filepath, encoding){ 

    if (typeof (encoding) == 'undefined'){ 
     encoding = 'utf8'; 
    } 
    var file = fs.readFileSync(filepath, encoding); 
    return JSON.parse(file); 
} 

function getConfig(file){ 

    var filepath = __dirname + '/' + file; 
    return readJsonFileSync(filepath); 
} 

//assume that config.json is in application root 

json = getConfig('config.json'); 
+10

Buna göre NOT

'gerektirir ('./ config.json') aynı olan ' – Blowsie

+0

bu sürümleri v0 daha düşük node.js ile ilişkili bulunmuştur. 5.x http://stackoverflow.com/questions/7163061/is-there-a-require-for-json-in-node-js – Brankodd

+3

'fs.readFile()', 'require()' ile aynı değil . Dosyayı 'fs.readFile()' ile iki kez okumayı denerseniz, bellekte iki farklı işaretçiyi alırsınız. Ancak, eğer aynı dizgeye sahip() 'i (' ') iseniz,' (required') işlevinin önbelleğe alma davranışı nedeniyle, aynı nesneye bellekte işaret edersiniz. Bu beklenmedik sonuçlara yol açabilir: İlk işaretçi tarafından başvurulan nesne değiştirilirken beklenmedik bir şekilde ikinci işaretçi tarafından değiştirilen nesneyi değiştirir. – steampowered

11

Bu, benim için çalıştı. fs modülünü kullanarak:

var fs = require('fs'); 

function readJSONFile(filename, callback) { 
    fs.readFile(filename, function (err, data) { 
    if(err) { 
     callback(err); 
     return; 
    } 
    try { 
     callback(null, JSON.parse(data)); 
    } catch(exception) { 
     callback(exception); 
    } 
    }); 
} 

Kullanımı:

readJSONFile('../../data.json', function (err, json) { 
    if(err) { throw err; } 
    console.log(json); 
}); 

Kaynak: https://codereview.stackexchange.com/a/26262

+0

üzerinde hata atmak tam olarak bunu kullanarak alıyorum ve eğer (err) {throw err; } SyntaxError: Beklenmeyen belirteç} ' – Piet

14

kontrolörünüze böyle bir şey yapın. için

json dosyanın içeriğini olsun:

ES5 var foo = require('path/to/your/file.json');

ES6 import foo from '/path/to/your/file.json'; için

görünümünüzejson gönderin:

function getJson(req, res, next){ 
    res.send(foo); 
} 

Bu istek üzerinden görünümünüze json içeriği göndermelidir. BTMPL

While this will work, do take note that require calls are cached and will return the same object on each subsequent call. Any change you make to the .json file when the server is running will not be reflected in subsequent responses from the server.

+0

Yerel dosyalar için,'./'Talebine eklenen nokta/eğime ihtiyacınız olduğunu unutmayın. –

İlgili konular