Я обновил свое приложение с activinlt 2.x до 3.2.2. Теперь я получаю следующую ошибку для каждого отформатированного сообщения:
index.js: 1437 [React Intl] Ошибка форматирования сообщения: "titleBar.login" для локали: "de", с использованием сообщения по умолчанию в качестве запасного. TypeError: Сообщение должно быть предоставлено в виде String или AST.
То же самое для сообщения по умолчанию: Ошибка форматирования сообщения по умолчанию для: "titleBar.login" TypeError: Сообщение должно быть предоставлено в виде String или AST.
И наконец: [React Intl] Невозможно отформатировать сообщение: "titleBar.login", используя источник сообщения в качестве запасного варианта
Однако графический интерфейс корректно отображается и показывает перевод на немецкий язык ("de"). Но в консоли Chrome меня заваливают сообщениями об ошибках. Что не так?
const userInfo = useContext(UserContext); // using hooks
return (
<UncontrolledDropdown className={styles.user}>
<DropdownToggle>
...
</DropdownToggle>
<DropdownMenu>
...
{!userInfo.isLoggedIn && (
<DropdownItem>
<div onClick={() => userInfo.login()}>
<FormattedMessage {...msgs.login} /> // this has id=titleBar.login
</div>
</DropdownItem>
)}
</DropdownMenu>
</UncontrolledDropdown>
);
};
Есть идеи, как мне избавиться от этих сообщений об ошибках?
Кстати: ошибка выводится в формате сообщения. Сообщение анализируется как строка (без заполнителей и т. Д.). Затем он проверяет, является ли AST массивом, и выбрасывает, потому что это только один узел ... Вот фрагмент кода:
if (typeof message === 'string') {
this.message = message;
if (!IntlMessageFormat.__parse) {
throw new TypeError('IntlMessageFormat.__parse must be set to process `message` of type `string`');
} // Parse string messages into an AST.
this.ast = IntlMessageFormat.__parse(message);
} else {
this.ast = message;
}
if (!Array.isArray(this.ast)) {
throw new TypeError('A message must be provided as a String or AST.');
}