@eppo/node-server-sdk

中文文档
4.0.0发布于 2026/01/28MITTypeScriptCommonJS近 30 天下载 35.1万

Epo 节点服务器 SDK

中文使用文档
文档目录9 节
  1. 特征
  2. 所需资源
  3. 安装
  4. 快开始
  5. 分配职能
  6. 初始化选项
  7. 任务日志
  8. 导出配置
  9. 哲学

Epo 节点 SDK

Test and lint SDK

埃波 是一个模块化的标注和实验分析工具。 Eppo的节点SDK是用来在多用户服务器侧上下文中完成任务而构建的. 在继续之前,你需要一个Epo账户.

特征

  • 特性门
  • 杀死开关
  • 动态配置
  • 逐步推出
  • A/B/n实验
  • 坚持
  • 相互排斥的实验(Layers)
  • 回转实验
  • 四. 多武装土匪

所需资源

  • 节点.js版本 20.x 或以后

安装

npm install @eppo/node-server-sdk

快开始

开始初始化一个Eppo客户端的单通实例. 初始化后,客户端可以用于在您的应用程序中任意位置的任务.

初始化一次

import { init } from "@eppo/node-server-sdk";

await init({ apiKey: "<SDK-KEY-FROM-DASHBOARD>" });

随地分配

import * as EppoSdk from "@eppo/node-server-sdk";

const eppoClient = EppoSdk.getInstance();

// Hypothetical user.
const user = getCurrentUser();

const variation = eppoClient.getStringAssignment(
  'new-user-onboarding', 
  user.id, 
  { country: user.country }, 
  'control'
);

分配职能

每个Eppo旗都有回放类型,在仪表板上设定一次创建. 一旦创建了一面旗帜,代码中的指派应当使用相应的打入函数:

getBoolAssignment(...)
getNumericAssignment(...)
getIntegerAssignment(...)
getStringAssignment(...)
getJSONAssignment(...)

每个函数都有相同的签名,但返回函数名中的类型。 用于布尔斯 getBooleanAssignment,其签名如下:

getBoolAssignment: (
  flagKey: string,
  subjectKey: string,
  subjectAttributes: Record<string, any>,
  defaultValue: boolean,
) => boolean

初始化选项

这个 init 函数接受以下可选配置参数.

选项类型说明默认
assignmentLogger指派一个回调,将每个任务发送到你的数据仓库。 仅用于实验分析。 见 实例 见下文.null
requestTimeoutMs编号实验配置 HTTPS 请求的超时为毫秒.5000
numInitialRequestRetries编号数目 额外 如果初始配置请求失败,则会尝试其时间。 这是通常同步等待的请求(通过 await供完成。 请求之间将进行一个小等.1
pollAfterFailedInitialization布尔即使初始配置请求失败, 仍要为新配置投放 .false
throwOnFailedInitialization布尔如果初始化时无法获取初始配置, 则丢出一个错误( 拒绝承诺 ) .true
numPollRequestRetries编号如果在初始化后对更新配置进行投票,在放弃之前将尝试请求次数。 随后的尝试使用指数回放进行.7

任务日志

要使用 Eppo SDK 进行需要进行分析的实验,请通过回调记录功能到 init 函数在 SDK 初始化上。 SDK在指定变异时引用回调来获取任务数据. 仓库需要分配数据进行分析.

以下代码说明了使用下列方式进行记录召回的实例: 部分但你可以使用任何你想要的系统。 唯一的要求是SDK收到一个 logAssignment 调用函数 。 在这里,我们确定 Eppo 的实施 IAssignmentLogger 包含单个函数的界面 logAssignment数字 :

import { IAssignmentLogger } from "@eppo/node-server-sdk";
import { AnalyticsBrowser } from "@segment/analytics-next";

// Connect to Segment (or your own event-tracking system)
const analytics = AnalyticsBrowser.load({ writeKey: "<SEGMENT_WRITE_KEY>" });

const assignmentLogger: IAssignmentLogger = {
  logAssignment(assignment) {
    analytics.track({
      userId: assignment.subject,
      event: "Eppo Assignment",
      type: "track",
      properties: { ...assignment },
    });
  },
};

导出配置

为了支持需要用 Epo 客户端 SDK 拖曳前端客户端的用例, Eppo NodeJS SDK 提供了导出旗帜配置的功能 .

使用 getFlagConfigurations(): Record<string, Flag> 函数以导出旗帜配置,将其字符串化(或您的首选序列化方法),并作为常规初始化的一部分发送给前端客户端.

import express from 'express';
import * as EppoSdk from "@eppo/node-server-sdk";

const app = express();
const eppoClient = EppoSdk.getInstance();

app.get('/api/flag-configurations', (req, res) => {
  const flagConfigurations = eppoClient.getFlagConfigurations();
  res.json(flagConfigurations);
});

哲学

Eppo的SDK是为简便,速度和可靠性而建造的. 旗帜配置被压缩并分布在全局CDN(快取)上,一般在15ms以下到达您的服务器. Server SDKs继续投票Eppo的API, 然后在本地缓存配置,确保每项任务立即完成。 每个SDK内部的评价逻辑由几行简单的数字和字符串比较组成. 上面列出的打出功能是所有开发者需要理解的,抽象出Eppo的内在(并扩展)功能集的复杂性.

版本与发布记录

@eppo/node-server-sdk 共发布 61 个版本,首次发布于 2022/04/27;过去 12 个月发布了 1 个版本。

版本发布日期距今
4.0.0latest2026/01/289 个月前
3.12.12025/08/091.3 年前
3.12.02025/08/081.3 年前
3.11.02025/04/041.6 年前
3.10.22025/03/211.7 年前
3.10.12025/03/201.7 年前

其他发布通道:alpha.0 → 3.7.0-alpha.0,alpha → 3.7.1-alpha.1。

关于 @eppo/node-server-sdk 的常见问题

@eppo/node-server-sdk 是什么?

Epo 节点服务器 SDK

如何安装 @eppo/node-server-sdk?

在项目目录运行 npm install @eppo/node-server-sdk,或使用 pnpm add / yarn add / bun add。

@eppo/node-server-sdk 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@eppo/node-server-sdk 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@eppo/node-server-sdk 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20.x。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@eppo/node-server-sdk 可以商用吗?

@eppo/node-server-sdk 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@eppo/node-server-sdk 的下载量有多少?

根据 npm 官方下载统计,@eppo/node-server-sdk 在 2026/10/14 – 2026/11/12 这 30 天内被下载 351,304 次,日均约 11,710 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@eppo/node-server-sdk 还在维护吗?

最新版本 4.0.0 发布于 2026/01/28(9 个月前);至今共发布 61 个版本,其中过去 12 个月发布了 1 个;首次发布于 2022/04/27。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。