2013-03-04 18 views
5

मैंने जेसन फ़ाइल को नोड में पार्स करने की कोशिश की लेकिन हमेशा त्रुटि हुई और मैं इसे Google पर हल कर सकता हूं लेकिन इसे हल नहीं कर सकता। क्या आप मेरी मदद कर सकते हैं?नोड.जेएस JSON.parse त्रुटि अपरिभाषित

undefined:1 
undefined 
^ 
SyntaxError: Unexpected token u 
at Object.parse (native) 
at Object.<anonymous> (app.js:13:19) 
at Module._compile (module.js:449:26) 
at Object.Module._extensions..js (module.js:467:10) 
at Module.load (module.js:356:32) 
at Function.Module._load (module.js:312:12) 
at Module.runMain (module.js:492:10) 
at process.startup.processNextTick.process._tickCallback (node.js:244:9) 

यह मेरा कोड

var app = express(); 
var mongodb = require("mongoskin"); 
var fs = require('fs'); 

var content; 
fs.readFile('./config/db.json', function read(err, data) { 
    if (err) { 
     throw err; 
    } 
    content = data; 
}); 
var config = JSON.parse(content); 


app.get('/', function(req, res){ 
    res.send(config.left); 
}); 

app.listen(process.env.VCAP_APP_PORT || 3000); 

है और db.json यह है। जैसा कि आप देख सकते हैं, कोई त्रुटि नहीं है।

{ 
    "left": 3 
} 

उत्तर

6

readFileअतुल्यकालिक, इससे पहले कि आप content को कोई मान निर्दिष्ट है, और इसलिए contentundefined की उसके डिफ़ॉल्ट मान है तो अपने JSON.parse लाइन कहा जाता है।

  1. ले जाएँ तर्क डेटा कॉलबैक में का उपयोग कर:

    आपके पास दो विकल्प।

    var app = express(); 
    var mongodb = require("mongoskin"); 
    var fs = require('fs'); 
    
    fs.readFile('./config/db.json', function read(err, data) { 
        if (err) { 
         throw err; 
        } 
    
        var config = JSON.parse(data); // <=== Note I'm using `data`, not `content`; we don't need a `content` variable anymore 
    
        app.get('/', function(req, res){ 
         res.send(config.left); 
        }); 
    
        app.listen(process.env.VCAP_APP_PORT || 3000); 
    }); 
    
  2. readFile की तुल्यकालिक संस्करण का उपयोग करें (जो readFileSync है)। जब आप इसे पार्स करने के लिए कोशिश

    // ... 
    content = fs.readFileSync('./config/db.json'); 
    
    var config = JSON.parse(content); 
    // ... 
    
+0

यह धन्यवाद work..I js के लिए नया हूँ पढ़ा है कि। –

0

contentundefined के बराबर है। आपको readFile कॉलबैक में अपने JSON डेटा को पार्स करना चाहिए या इसके बजाय readFileSync का उपयोग करना चाहिए।

इसके अलावा आपको शायद कॉलबैक से फेंकना नहीं चाहिए।

इस ओर जाता है मुझे लगता है कि करने के लिए आप कैसे काम करता है Node.js के कुछ गलतफहमी है और मैं दृढ़ता से सुझाव है कि आप this

संबंधित मुद्दे