我正在创建一个与节点后端表达应用程序对话的角度应用程序,并使用配置文件在我的节点应用程序中设置env变量我可以像这样访问我的配置文件:
index.js
var port = config.get("server:port");
var server = app.listen(port, function() {});
我的配置文件如下所示:
app.config.js
module.exports =
{
"server":{
"host":"localhost",
"port":3000
},
"mongodb": "",
"redis": {
"loadBalancerInstance": {
"host": "server",
"port": {
"default": "6379"
}
}
},
"elastic": {
"server": "server",
"port": "9200",
"user":"foo",
"password":"bar"
},
"log": {
"level": "info",
"filename": "",
"console": true,
"logio": {
"port": "28777",
"node_name": "this-server-name",
"host": "server"
}
}
};
我已经静态地定义了到后端的路由/端口
datafactory.js
angular.module('dashboard.factories')
.factory('DataFactory', function($http, $q, FormatFactory) {
var backend = function(apiEndPoint, clientKey) {
clientKey = clientKey || "";
var deferred = $q.defer();
$http.get("http://localhost:3000/<-(pull this from config file)" + apiEndPoint + "/" + clientKey)
我的问题是如何在角度服务中访问app.config.js并在我的角度服务中动态设置主机/端口
答案 0 :(得分:1)
我想如果您仍然坚持使用节点服务器使用的相同配置文件,那么您必须将.js文件提供给您的应用程序的GET请求,您可以使用该文件。然后必须将字符串解析为JSON。
编辑: 您将不得不拥有两个配置文件,一个可用于您的节点服务器,另一个适用于您的角度应用程序。现在,如果您希望源是一个文件,您可以将其构建到您的构建过程中 - 如果您使用gulp或grunt之类的东西,这将相当容易。它可以采用单个配置文件并构建两个文件 - 节点服务器配置文件,以及可以注入数据服务的角度模块(我建议使用常量或值)。
答案 1 :(得分:0)
如果您在localhost:3000/config
处提供配置文件,则可以执行以下操作:
angular.module('dashboard.factories')
.factory('DataFactory', function($http, $q, FormatFactory) {
$http.get('localhost:3000/config')
.success(function(config) {
$http.get(config.server.host + ":" + config.server.port)
// whatever you want here
});
});