
Product
Introducing Webhook Events for Pull Request Scans
Add real-time Socket webhook events to your workflows to automatically receive pull request scan results and security alerts in real time.
@gaoding/egg-apollo-client
Advanced tools
******************************************************************
******************************************************************
********** 代码千万行,注释第一行 **********
********** 编码不规范,同事泪两行 **********
******************************************************************
******************************************************************
携程 Apollo 配置中心 egg 客户端版本
使用时,如果遇到编译失败,请确保你的系统安装有 curl 命令行工具
npm i @gaoding/egg-apollo-client [--save]
add plugin
// config/plugin.js or config/plugin.ts
exports.apollo = {
enable: true,
package: '@gaoding/egg-apollo-client'
}
add apollo plugin config
// config/config.[env].js
config.apollo = {
config_server_url: 'http[s]://xxxxxxx', // required, 配置中心服务地址
app_id: 'xxx', // required, 需要加载的配置
init_on_start: true, // optional, 在 app 启动时同时加载配置,加载的配置会在插件加载前被加载
cluster_name: 'xxx', // optional, 加载配置的集群名称, default: 'default'
namespace_name: 'xxx', // optional, 加载配置的命名空间, default: 'application'
release_key: 'xxx', // optional, 加载配置的版本 key, default: ''
ip: 'xxx' // optional,
set_env_file: false, // optional, 是否写入到 env 文件, default: false
env_file_path: 'xxxx', // optional, 写入的 env 文件路径, default: ${os.tmpdir()}/.env.apollo
watch: false, // optional, 长轮询查看配置是否更新, default: false
timeout: 50000, // optional, 长轮询 timeout 设置,默认 50000
}
在 config 目录下添加新文件 config.apollo.js
// config.apollo.js
module.exports = (apollo, appConfig) => {
// 直接提取配置
const env = apollo.get('${namespace}.NODE_ENV');
// 不添加 namespace 前缀的时候,默认使用 application 的配置
// 如果 application 不包含该配置,则提取 process.env 里面的配置
// const env = apollo.get('NODE_ENV');
// 提取类型配置
apollo.getString('${namespace}.${string_config}');
apollo.getNumber('${namespace}.${number_config}');
apollo.getBoolean('${namespace}.${boolean_config}');
apollo.getJSON('${namespace}.${json_config}');
apollo.getDate('${namespace}.${date_config}');
// 提取指定 namespace 内容
const application = apollo.getNamespace('application');
// 提取配置
const config1 = application.get('config1');
// 提取 string 类型配置
const str = application.getString('config2');
// 提取 number 类型配置
const num = application.getNumber('config3');
// 提取 boolean 类型配置
const bool = application.getBoolean('config4');
// 提取 json
const json = application.getJSON('config5');
// 提取 date
const date = application.getDate('config6');
// 提取所有配置内容
const all = apollo.getAll();
// 可以从 all 中提取需要的 namespace 配置
// const application = all.application
// const config1 = application.get('config1');
// const str = application.getString('config2');
// const num = application.getNumber('config3');
// const bool = application.getBoolean('config4');
// const json = application.getJSON('config5');
// const date = application.getDate('config6');
return {
logger: {
...appConfig.logger,
level: apollo.get('LOGGER_LEVEL')
}
....
}
}
egg-apollo-client 没有特殊配置只加载符合配置项(config.apollo)的配置信息,如果有需要其他的额外配置,可以另外通过启动自定义来配置
// app.js
class AppBootHook {
constructor(app) {
this.app = app;
}
configWillLoad() {
// configWillLoad 是最后一次修改插件配置的时机,此方法内只能使用同步方法
// 插件在实例化之后不能再修改配置,所以如果有需要加载插件配置的内容,需要在这里加载
// apollo.init 结合了 http.request 的同步方法,该方法会阻塞知道拿到数据或请求超时,可以使用该方法在这里加载配置
this.app.apollo.init({...});
}
}
FAQs
携程 Apollo 配置中心 egg 客户端版本
We found that @gaoding/egg-apollo-client demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 15 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Add real-time Socket webhook events to your workflows to automatically receive pull request scan results and security alerts in real time.
Research
The Socket Threat Research Team uncovered malicious NuGet packages typosquatting the popular Nethereum project to steal wallet keys.
Product
A single platform for static analysis, secrets detection, container scanning, and CVE checks—built on trusted open source tools, ready to run out of the box.