优化对象无效。失败isFeatureEnabled

时间:2020-03-30 17:29:08

标签: optimizely

尝试将React和JavaScript SDK用于Optimizely,但在控制台中出现以下错误:

OPTIMIZELY: Optimizely object is not valid. Failing isFeatureEnabled.

以下有关我的设置的更多信息:

通过纱线安装:yarn add @optimizely/react-sdk

在应用容器中导入语句:

import {
  createInstance
} from '@optimizely/react-sdk'

渲染功能中的逻辑

const optimizely = createInstance({
  sdkKey: '<SDK_KEY>',
})

const enabled = optimizely.isFeatureEnabled('example_feature', 'user123');

我在Chrome控制台中收到此错误:

OPTIMIZELY: Optimizely object is not valid. Failing isFeatureEnabled.

1 个答案:

答案 0 :(得分:7)

在SDK成功加载项目的datafile之前,调用isFeatureEnabled时,Optimizely对象将记录该错误。发生这种情况的原因有以下几种。查看问题中提供的代码示例,看来原因#4是最有可能导致错误的原因,但以下是所有这些原因:

1。错误的SDK密钥

如果将错误的SDK密钥传递给createInstance,则SDK将无法成功加载数据文件,并且会出现此错误。

const optimizely = createInstance({
  sdkKey: 'invalid-sdk-key'
})

2。数据文件格式错误

如果您将数据文件直接传递给createInstance,但传递的对象不是正确的数据文件格式,则会出现此错误:

const optimizely = createInstance({
  datafile: { wrong: 'format' }
})

3。无法访问的数据文件

确保您可以在Web浏览器中访问数据文件的网址:https://cdn.optimizely.com/datafiles/<Your_SDK_Key>.json。如果出现AccessDenied(403)或Not Found(404)错误并且您的帐户是新帐户,请确保您在Optimizely UI中创建了一些内容,以便触发Optimizely创建和上传适当的数据文件。

如果在正在运行的应用程序的控制台中看到对数据文件的请求的403404,请确保没有广告拦截器,防火墙或代理阻止SDK请求SDK中Optimizely CDN上的数据文件。

4。不等待Optimizely SDK准备就绪

即使您具有正确的SDK密钥,并且SDK可以访问Optimizely的CDN。如果您没有为SDK留出足够的时间来完成数据文件请求,那么您将在准备就绪之前尝试使用它。

在JavaScript SDK中,可以使用onReady方法解决此问题:

const optimizely = createInstance({
  sdkKey: 'valid-sdk-key',
});

optimizely.onReady().then(() => {
  // optimizely is ready to use, with datafile downloaded from the Optimizely CDN
});

如果使用React SDK的<OptimizelyFeature>组件,则<OptimizelyFeature>组件将自动等待,直到<OptimizelyProvider>成功加载数据文件后再评估isFeatureEnabled