2015-07-01 73 views
0

我用下面的代碼中使用的配置文件,我想讀值 ,我嘗試用下面的,我得到了錯誤類型錯誤:未定義是不是一個函數無法得到的配置JSON文件

這是我在文件夾配置創建的JSON文件/配置

{ 
     "ENV": { 
     "dev": { 
      "PORT": 3050 
     }, 
     "prod": { 
      "PORT": 3060 
     } 
     } 
} 


config = require('./configuration/config'); 

我試着像下面這樣獲得ENV,我得到了錯誤

var env = config.get('ENV'); 

我使用這個模塊 https://www.npmjs.com/package/config

調試我看到的配置與定義的值對象...

+1

如果在「PORT」處有逗號:3060,? – Wazaaaap

+0

@ wazaaaap-不是這個問題的JSON是有效的我只是刪除不必要的屬性的帖子... –

+0

你使用的軟件包在require()中使用主文件夾名稱,然後使用get()函數的filename.object。 – ODelibalta

回答

0

根據您所提供的模塊鏈接的配置JSON(default.json)需要在一個名爲「config」的根目錄下的文件夾中。然後,您可以使用require

var config = require('config'); 

,並在顯示模塊的配置自動加載JSON並解析它。

然後,您可以使用get方法就像你在你的問題做了:

var env = config.get('ENV'); 
+0

謝謝,但我已經做到了,我得到了差錯錯誤:配置屬性「ENV」未定義.... –

+0

適合我工作。我在控制檯中獲得了'{dev:{PORT:3050},prod:{PORT:3060}}'。 – Andy

+0

確保配置文件被稱爲'default.json'。 – Andy

0

您正在使用它錯了。

你需要有一個「config/default.json」,根據你的根文件夾。

然後,只需:

var config = require('config'); 

var env = config.get('ENV'); 

console.log(env); 

配置/ default.json文件:

{ 
    "ENV": { 
    "dev": { 
     "PORT": 3050 
    }, 
    "prod": { 
     "PORT": 3060 
    } 
    } 
} 

只是你的數據進行測試,它工作正常。


編輯:

我不知道,如果你需要使用這個模塊,但如果你不這樣做,你可以使用這樣的事情:

var config = require('./configuration/config.js'); 

console.log(config.ENV); 

而且,你的配置文件將是./configuration/config.js(介意的.js不以.json):

module.exports = { 
    "ENV": { 
    "dev": { 
     "PORT": 3050 
    }, 
    "prod": { 
     "PORT": 3060 
    } 
    } 
} 

這是一個簡單但高效的配置文件。

0

您正在使用的模塊中走錯了路,你需要這樣做:

放在一個名爲config文件夾中的文件夾的應用程序,那麼你應該創建一個名爲default.json該文件夾內的文件。因此,它應該是這樣的:

yourApp 
--config 
----default.json 

default.json根據您的示例中的內容應該是唯一的:

{ 
    "ENV": { 
    "dev": { 
     "PORT": 3050 
    }, 
    "prod": { 
     "PORT": 3060 
    } 
    } 
} 

,然後,當你想用你的配置任何地方,你應該要求模塊是這樣的:

var config = require('config'); 

,然後用你的價值觀是這樣的:

var devPort = config.get("ENV.dev.port"); 

而且,當然,你也可以做這樣的事情:

var config = require('config'); 
var env = config.get('ENV.dev'); 
var port = env.port; 

記住這是一個JSON,你可以用你可以玩的對象以相同的方式打球。