2016-04-22 58 views
0

我有一個Node應用程序。在這個程序,我有這樣的目錄結構:節點 - 將JSON文件加載到代碼中

library/ 
    ents/ 
    index.js 
index.js 
package.json 
settings.json 

我settings.json文件看起來像這樣:

settings.json

{ 
    "url":"http://www.example.com" 
} 

還有更多的文件,但這與這個問題無關。在./library/ents/index.js文件中,我有以下內容:

let settings = require('../../settings'); 
console.log(settings); 

執行此操作。但是,我期待看到打印出settings.json文件的內容。相反,我只看到{}。我真的不明白爲什麼會發生這種情況。

+1

您是否試過用'.json'文件結尾的JSON文件的要求,比如require('../../ settings.json')'? – helpermethod

+0

我複製了你的文件夾結構並複製粘貼了你的json和代碼,它工作正常。你確定你的json文件不是空的嗎?你嘗試使用絕對路徑嗎? – Shanoor

回答

2

要求是裝載AMD模塊,不是以這種方式閱讀JSON,如果你想保持YOUT文件作爲真正的JSON,你可以嘗試這樣的:

var fs = require('fs'); 
var obj = JSON.parse(fs.readFileSync('file', 'utf8')); 

Using Node.JS, how do I read a JSON object into (server) memory?

+0

只是一個提醒 - 更好地包裝在try/catch中,FS操作和JSON.parse都可能會引發異常。 – jkondratowicz

+1

'require()'通常用於加載/解析JSON文件,您可以在[npm's doc](https://docs.npmjs.com/files/package.json)中看到一個示例。 – Shanoor

0

採取你可以改變settings.json到settings.js看起來像這樣:

module.exports = { 
    "url":"http://www.example.com" 
} 

然後

let settings = require('../../settings');