Оптимизированный объект недействителен. В противном случае isFeatureEnabled - PullRequest
2 голосов
/ 30 марта 2020

Попытка использовать React и JavaScript SDK для Optimizely , но в консоли появляется следующая ошибка:

OPTIMIZELY: Optimizely object is not valid. Failing isFeatureEnabled.

Подробнее о моей настройке ниже:

Установлено через пряжу: yarn add @optimizely/react-sdk

Оператор импорта в контейнере приложения:

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

Logi c в функции рендеринга:

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

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

Я получаю эту ошибку в консоли Chrome:

OPTIMIZELY: Optimizely object is not valid. Failing isFeatureEnabled.

1 Ответ

3 голосов
/ 30 марта 2020

Объект Optimizely регистрирует эту ошибку, когда вы вызываете isFeatureEnabled до того, как SDK успешно загрузит файл данных вашего проекта . Это может произойти по ряду причин, изложенных ниже. Глядя на пример кода, приведенный в вопросе, кажется, что причина № 4 является наиболее вероятной причиной ошибки, но вот все они:

1. Неверный ключ SDK

Если вы передадите неверный ключ SDK для createInstance, SDK не удастся успешно загрузить файл данных, и вы получите эту ошибку.

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

2. Искаженный файл данных

Если вы передаете файл данных непосредственно в createInstance, но передаете объект, который не соответствует формату файла данных, вы получите эту ошибку:

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

3. Недоступный файл данных

Убедитесь, что вы можете получить доступ к URL своего файла данных в веб-браузере: https://cdn.optimizely.com/datafiles/<Your_SDK_Key>.json. Если вы получаете ошибку AccessDenied (403) или Not Found (404) и ваша учетная запись является новой, убедитесь, что вы создали что-то в пользовательском интерфейсе Optimizely, чтобы Optimizely запускался для создания и загрузки соответствующего файла данных.

Если в консоли запущенного приложения вы видите 403 или 404 для запроса к файлу данных, убедитесь, что нет блокировщиков рекламы, брандмауэров или прокси-серверов, не позволяющих SDK запрашивать файл данных в CDN Optimizely из SDK.

4. Не дожидаясь готовности Optimizely SDK

Даже если у вас есть правильный ключ SDK и SDK может получить доступ к CDN Optimizely. Если вы не дадите SDK достаточно времени для запроса файла данных до конца sh, вы будете пытаться использовать 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.

...