Flagsmith / Flagsmith/flagsmith-nodejs-client
Feature values always have type string when using local evaluation mode
- 主要语言
- TypeScript
- 星标
- 30
- 派生
- 26
- 平均合并
- 11 分钟
- 30 天内合并 PR
- 5
描述
We've started seeing an issue where number values like this one are being returned as type `string` when `enableLocalEvaluation` is set to `true`.

Using this test script I've validated that the local evaluation causes the change in behaviour (thanks Matt for the help 🙌 )
This has been tested on `flagsmith-nodejs` versions `2.5.1` and `3.2.0`
```ts
import Flagsmith from 'flagsmith-nodejs';
async function main(): Promise {
const flagClient = new Flagsmith({
environmentKey: 'ser.key',
enableLocalEvaluation: true,
enableAnalytics: false,
});
const environmentFlags = await flagClient.getEnvironmentFlags();
const flag = environmentFlags.getFlag('daisy.settlements.timeout');
console.log(`flagClient.apiUrl=${flagClient.apiUrl}`);
console.log(`flagClient.enableLocalEvaluation=${flagClient.enableLocalEvaluation}`);
console.log(JSON.stringify(flag));
console.log(`typeof flag.value=${typeof flag.value}`);
await flagClient.close();
}
void main();
```
`enableLocalEvaluation=true`
```
flagClient.apiUrl=https://edge.api.flagsmith.com/api/v1/
flagClient.enableLocalEvaluation=true
{"value":"60000","enabled":true,"isDefault":false,"featureId":62178,"featureName":"daisy.settlements.timeout"}
typeof flag.value=string
```
`enableLocalEvaluation=false`
```
flagClient.apiUrl=https://edge.api.flagsmith.com/api/v1/
flagClient.enableLocalEvaluation=false
{"value":60000,"enabled":true,"isDefault":false,"featureId":62178,"featureName":"daisy.settlements.timeout"}
typeof flag.value=number
```
贡献指南
调研方向
从 enableLocalEvaluation 为 true 时由 getEnvironmentFlags() 和 getFlag() 执行的 Flagsmith 客户端路径开始,使用提供的 TypeScript 脚本复现不同的值类型。将本地评估结果与 API 结果进行比较,并验证数值型 feature 值在两种模式下都保留其数字类型。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- nodejs, typescript
- 领域
- backend
- Issue 类型
- 缺陷
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 42/100