尝试将React和JavaScript SDK用于最优,但在控制台中获得以下错误:
OPTIMIZELY: Optimizely object is not valid. Failing isFeatureEnabled.
有关我的设置的更多信息如下:
通过纱线安装:yarn add @optimizely/react-sdk
app容器中的导入语句:
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.
发布于 2020-03-30 17:29:08
在SDK成功加载项目的数据文件之前,当调用数据文件时,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
中访问数据文件的url。如果您收到一个AccessDenied
(403)或Not Found
(404)错误,并且您的帐户是新的,请确保您在Optimizely中创建了一些内容,这样就可以触发Optimizely来创建和上传一个正确的数据文件。
如果在运行中的应用程序的控制台中,您看到了对数据文件的请求的403
或404
,请确保不存在阻止SDK从SDK上在Optimizely的CDN上请求数据文件的ad-阻止程序、防火墙或代理。
4.不等待Optimizely SDK准备好
即使您拥有正确的SDK键,并且SDK可以访问Optimizely的CDN。如果您没有给SDK足够的时间来完成数据文件请求,那么您将在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的<OptimizelyFeature>
组件,那么<OptimizelyFeature>
组件将自动等待,直到<OptimizelyProvider>
成功地加载了数据文件之后才计算isFeatureEnabled
。
https://stackoverflow.com/questions/60936096
复制相似问题