刚接触node和express,在开始做的时候就发现我想给系统做一些配置,好让在系统中全局可访问这些配置信息,但是没发现express有可供配置的地方。是框架本身没这个功能要自己写吗?
exports 或者 node 的全局吧
global.gConfig = require(‘config’)
gConfig 全局
@bluenaux 谢谢,这样好像可以全局访问
2L 的方式不错,不过建议不要设全局变量,把需要全局访问的都写在 config.js 里面,然后在需要使用的地方都引用 config.js
@alsotang 嗯,谢谢你建议
@alsotang 为什么不建议放到global中,而是放到.js文件中,然后到处去引用呢,我以前是放到文件中的,后来改成放到global中的,具体不知道为啥,求解
@alsotang 同意你的做法(写js的基本素质不污染全局变量嘛)。 但是我在开发中有三个环境:开发、测试、生产。 【问题来了】这三个环境我是根据渠道的传参判断的,在后面连接数据库的时候肯定也是分环境来连接(开发时肯定不能用生产数据库来做测试嘛),这时候通过读config.js就不知道目前是什么环境,需要连什么环境的数据库了。 【我的解决方案】还是得用2L的方法,在一开始就读取启动参数,判断环境,然后写到全局变量里。
通过系统环境变量区分测试环境及生产环境的应用配置
代码中不要用全局变量,好处很多,比如减少 side effect,利于测试。不过在测试里面为了方便可以用一到两个全局变量(比如 GLOBAL.expect = require('chai').expect
),但是也不能滥用,否则测试代码的环境和生产代码差太多就没有测试意义了。
@chenfeifan 可以用 config 模块:https://github.com/lorenwest/node-config。这样需要用到配置时只需要引用 const config = require('config');
模块会自动根据 NODE_ENV
加载对应的配置文件
@blackjack 不污染全局一定会带来一定程度的不方便,正常啊。 @chenfeifan 看 8L @pangnate
@chenfeifan 你没有root权限,运维总有吧?不然机器怎么配置的
受教了!