Я застрял на этих часах. Я развертываю свое приложение Next-JS на vercel и получаю много ошибок гидратации. как я уже сказал, в моем режиме разработки на моей локальной машине я вообще не получаю никаких ошибок.
Я читал, что ошибка может возникать из-за разных часовых поясов сервера и клиента или локальной машины, но я использую метку времени.
Проблема возникает только в моем компоненте Messages.tsx.
Вот как я сохраняю метку времени в БД: метод 1 (когда я отправляю сообщение в мессенджер facebook):
const timestamp = Date.now();
const messageData: Message = {
id: nanoid(),
senderId: body.teamId,
text: body.message.text,
timestamp,
source: "facebook",
};
метод 2: когда я получаю сообщение от мессенджера Facebook (используя их метку времени):
const messageData: Message = {
id: webhook_event.message.mid,
senderId: sender_psid,
text: webhook_event.message.text,
timestamp,
source: "facebook",
};
Вот как я его форматирую:
const formatTimestamp = (timestamp: number) => {
return format(timestamp, "HH:mm");
};
фото моих ошибок:
Благодарим вас за помощь!
Я думаю, что это должно быть что-то о форматах, когда я очищаю БД (таблицу сообщений), я не получаю ничего, затем, когда я отправляю сообщение от меня на страницу Facebook, по-прежнему нет ошибки гидратации, проблема в том, что когда я получаю сообщение от Facebook .
Что я должен искать в отладке?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вероятно, это действительно из-за разных часовых поясов, например. твой и Версель.
но я использую метку времени
В этом случае это не имеет значения, потому что вы все равно форматируете его до даты. Одна и та же временная метка, отформатированная для локальной даты, может отображать другую дату.
Вы можете использовать suppressHydrationWarning prop (docs), например, для компонента, который отображает дату.
Или вы можете просто не отображать этот компонент на сервере. Или принудительно форматируйте UTC. Но suppressHydrationWarning, пожалуй, лучшее решение здесь.
Да, это сделало работу, взглянул на документы. Спасибо!
Обычно я отлаживаю ошибки гидратации, отключая весь JavaScript, а затем загружая полный HTML-код
body. После этого включите JavaScript и включите рендеринг на стороне клиента. Скопируйте полный HTML-кодbodyеще раз и сравните, используяdiff. Иногда проблема может быть не в вашем форматировании, а в несоответствии состояния исходного монтирования/рендеринга.