split.io的localhost模式无法运行,SDK_READY事件未触发如何解决
Split.io JavaScript SDK localhost模式SDK_READY事件不触发解决方案
出现该问题的核心原因是配置结构与SDK版本不匹配、client实例化参数缺失两个问题,可按以下步骤逐一排查修复:
- 版本适配配置结构
v10及以上版本的Split JS SDK调整了localhost模式的feature配置路径,旧版本中放在根节点的features配置,需要移动到sync.localhostFeatures节点下,修改后的初始化配置如下:var factory = SplitFactory({ core: { authorizationKey: "localhost", }, sync: { localhostFeatures: { "my-feature": "on" } } }); - 补充client实例化的用户标识参数
Split客户端SDK要求实例化时传入用户唯一标识,未传该参数会导致初始化流程卡住无法触发就绪事件,修改client实例化代码:// 提前传入用户ID,后续调用getTreatment无需重复传递 var client = factory.client("CUSTOMER_ID"); - 改用Promise形式监听就绪状态
部分场景下事件绑定时机晚于SDK就绪触发时机,会导致回调不执行,可改用SDK内置的ready方法监听就绪:client.ready().then(() => { console.log("SDK_READY"); var treatment = client.getTreatment("my-feature"); console.log(treatment); });
按以上步骤修改后,localhost模式即可正常触发就绪事件,返回对应的feature开关值。
内容的提问来源于stack exchange,提问作者Philip Beber
相关产品推荐
相关产品推荐

