当您isFeatureEnabled
在 SDK 成功加载项目的数据文件之前调用时,Optimizely 对象将记录该错误。这可能由于以下列出的多种原因而发生。查看问题中提供的代码示例,看起来原因 #4 是最可能导致错误的原因,但以下是所有原因:
1. 错误的 SDK 密钥
如果您将错误的 SDK Key 传递给createInstance
,SDK 将无法成功加载数据文件,您将收到此错误。
const optimizely = createInstance({
sdkKey: 'invalid-sdk-key'
})
2. 格式错误的数据文件
如果您将数据文件直接传递给createInstance
,但传入的对象不是正确的数据文件格式,您将收到此错误:
const optimizely = createInstance({
datafile: { wrong: 'format' }
})
3. 无法访问的数据文件
确保您可以在 Web 浏览器中访问数据文件的 url 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 Key 并且 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
});
如果使用<OptimizelyFeature>
React SDK 的组件,那么<OptimizelyFeature>
组件会自动等待,直到<OptimizelyProvider>
成功加载数据文件,然后再评估isFeatureEnabled
.