express中怎么定义全局变量或是可在进行参数配置吗?
发布于 9 年前 作者 wtwei 15941 次浏览 最后一次编辑是 8 年前 来自 问答

刚接触node和express,在开始做的时候就发现我想给系统做一些配置,好让在系统中全局可访问这些配置信息,但是没发现express有可供配置的地方。是框架本身没这个功能要自己写吗?

13 回复

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

@alsotang @pangnate 8L好办法,可惜我就用不了,我没机器的超级权限,node都是用源码编译安装的。

@chenfeifan 你没有root权限,运维总有吧?不然机器怎么配置的

回到顶部