尝试将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.
答案 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创建和上传适当的数据文件。
如果在正在运行的应用程序的控制台中看到对数据文件的请求的403
或404
,请确保没有广告拦截器,防火墙或代理阻止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
。