Javascript 将配置文件与angularjs一起使用

Javascript 将配置文件与angularjs一起使用,javascript,angularjs,node.js,Javascript,Angularjs,Node.js,我正在创建一个angular应用程序,该应用程序与node backend express应用程序对话,并使用配置文件在我的node应用程序中设置环境变量。我可以访问我的配置文件,如下所示: index.js var port = config.get("server:port"); var server = app.listen(port, function() {}); module.exports = { "server":{ "host":"localh

我正在创建一个angular应用程序,该应用程序与node backend express应用程序对话,并使用配置文件在我的node应用程序中设置环境变量。我可以访问我的配置文件,如下所示:

index.js

  var port = config.get("server:port");
  var server = app.listen(port, function() {});
    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"
        }
      }
    };
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

  var port = config.get("server:port");
  var server = app.listen(port, function() {});
    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"
        }
      }
    };
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)
我已经静态地定义了到后端的路由/端口

datafactory.js

  var port = config.get("server:port");
  var server = app.listen(port, function() {});
    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"
        }
      }
    };
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)
angular.module('dashboard.factories')
.factory('DataFactory',函数($http,$q,FormatFactory){
var backend=函数(apiEndPoint,clientKey){
clientKey=clientKey | |“”;
var deferred=$q.deferred();

$http.get(“http://localhost:3000/我想,如果您一直使用节点服务器使用的配置文件,那么您必须使.js文件可用于应用程序的GET请求,然后您必须将字符串解析为JSON

编辑:
你必须有两个配置文件,一个可用于你的节点服务器,另一个可用于你的angular应用程序。现在,如果你希望源文件是一个文件,你可以将其构建到构建过程中-如果你使用gulp或grunt之类的东西,这将相当容易。可以使用单一的配置文件并构建两个文件-不需要de服务器配置文件和一个角度模块(我建议使用常量或值),您可以将其注入到数据服务中。

如果您在
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
    });
});

问题中提供的配置文件OP不是有效的JSON。在知道后端在哪个端口上运行之前,如何执行get请求?如果在不知道配置文件内容的情况下无法访问配置文件,听起来您遇到了问题。是否有办法在前端使用get require等效文件,然后只导入配置文件配置文件就像我对后端做的一样一个简单的谷歌搜索让我相信它会:我也遇到了这个问题,不知道这是否是常见的/最佳的做法,但谢谢,我认为这会解决我的问题