javascript - 在 Node.JS 中使用配置文件的最佳方法

标签 javascript mysql node.js node-mysql

我有一个 Node.JS 应用程序的配置文件(如下简化)

module.exports = function(){
  var settings = {
    port: '8088'
  }; 
  settings.mysql = {
    host : 'localhost',
    database : 'test'
  };
  // Override default settings
  switch(process.env.NODE_ENV){
    case 'production':
      settings.port = 8082;
    break;
    case 'staging':
      settings.port = 8083;
    break;     
  }
  return settings;
};

当我启动 Express.js 应用程序时,我需要此文件进行一些基本设置:

var Config = require('./config'),  settings = new Config();
var port = process.env.PORT || settings.port;    // set our port

稍后我还需要在 DAO 中(在我的模型中)使用此文件中的 MySQL 设置。此时我调用配置文件(它将再次运行它)

var Config = require('../config'), settings = new Config();
var mysql = require('mysql');
var pool = mysql.createPool(settings.mysql);

显然,每次我“要求”文件运行时,这看起来都很懒惰/效率低下。我应该将返回的“settings”变量存储在我的DAO可以看到的全局变量中,还是应该通过引用传递它?

我曾经一度考虑过将其制作为中间件并将其添加到请求中,但随后我需要我的路由( Controller )将其全部传递给 DAO(模型),这感觉不太正确。

最佳答案

只需导出对象本身,而不是将其包装在函数中 - Node 模块在第一次加载后会被缓存,因此不会再次运行逻辑。

var settings = {
  port: '8088'
}; 

settings.mysql = {
  host : 'localhost',
  database : 'test'
};

// Override default settings
switch(process.env.NODE_ENV){
  case 'production':
    settings.port = 8082;
  break;
  case 'staging':
    settings.port = 8083;
  break;     
}

module.exports = settings;

关于javascript - 在 Node.JS 中使用配置文件的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35220376/

相关文章:

javascript - 我收到错误 : failed to connect to [undefined:27017]

node.js - Typescript无法从套件中找到自定义的第三方类型

javascript - 我可以在客户端上找出监听提交事件时按下了哪个提交按钮吗?

mysql - double 的默认值是多少?

mysql - Git环境设置。需要建议

mysql - 为什么 Master 认为它是 Reboot 的 Slave?

javascript - 使用 date-fns 过滤 Sequelize

javascript - html 表格 td 金额列的右对齐?

javascript - iframe jquery 或 javascript 的刷新按钮

javascript - Bootstrap popover 不显示内容