pan*_*zhi 5 parsing json node.js
我试图解析节点中的json文件,但总是出错,我谷歌但不能解决它.你能帮助我吗?
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)
Run Code Online (Sandbox Code Playgroud)
这是我的代码
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);
Run Code Online (Sandbox Code Playgroud)
而db.json就是这个.如您所见,没有错误.
{
"left": 3
}
Run Code Online (Sandbox Code Playgroud)
readFile
是异步的,因此JSON.parse
在为值赋值之前调用行content
,因此content
默认值为undefined
.
您有两种选择:
使用数据将逻辑移动到回调中.
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);
});
Run Code Online (Sandbox Code Playgroud)使用同步版本readFile
(即readFileSync
).
// ...
content = fs.readFileSync('./config/db.json');
var config = JSON.parse(content);
// ...
Run Code Online (Sandbox Code Playgroud) 归档时间: |
|
查看次数: |
10936 次 |
最近记录: |