В настоящее время пытаюсь настроить уведомления в моем управляемом выставочном проекте.
47.0.0
0.17.0
12
В настоящее время я просто пытаюсь заставить работать базовую настройку и получить токен push-уведомлений моих устройств. Это нужно сделать с помощью Notifications.getExpoPushTokenAsync()
, как описано здесь.
Моя ошибка странная, когда я звоню getExpoPushTokenAsync
, я действительно получаю токен expo push, однако вскоре после сбоя моего приложения со следующими сообщениями
ERROR TypeError: undefined is not an object (evaluating '_$$_REQUIRE(_dependencyMap[1], "../../../src/util").types.isPromise')
WARN [expo-notifications] Error encountered while updating server registration with latest device push token. [TypeError: undefined is not an object (evaluating '_$$_REQUIRE(_dependencyMap[5], "@ide/backoff").computeNextBackoffInterval')]
я пытался
node_modules
и expo-notifications
, но все равно получаю то же самое.@ide/backoff
установлен в моем node_modules
.Еще одна интересная вещь заключается в том, что я могу назвать Notifications.getDevicePushTokenAsync()
нормально без ошибок. Но все равно получаю ту же ошибку, если я передам это методу getExpoPushTokenAsync
после. На поверхностном уровне кажется, что каким-то образом запрос к выставочным службам на получение push-токена выставки одновременно проходит и терпит неудачу 🤷♂️
const devicePushTokenResponse = await Notifications.getDevicePushTokenAsync();
const expoPushTokenResponse = await Notifications.getExpoPushTokenAsync({
devicePushToken: devicePushTokenResponse,
}); // <--- Returns token & errors a few seconds later
Не удалось найти другие сообщения с этой ошибкой и expo-notifications
, поэтому было бы интересно узнать, сталкивался ли кто-нибудь еще с подобной проблемой в последнее время / исправлял ли ее
Ваше здоровье
Хорошо, я понял, на это как-то намекала эта строчка
ERROR TypeError: undefined is not an object (evaluating '_$$_REQUIRE(_dependencyMap[1], "../../../src/util").types.isPromise')
И, в частности, тот факт, что зависимость node_modules
ссылается на 3 уровня вверх в файловой системе.
Оказывается, по какой-то причине мой преобразователь модулей (определенный в babel.config.js
) разрешал папку util
моего проекта, а не папку с пакетами утилит. Я думаю, что это было усугублено тем, что моя конфигурация метро использовала функциональность inlineRequires
для повышения производительности (см. подробнее)
Я уверен, что есть какая-то реальная конфигурация, которую можно было бы обновить, чтобы исключить node_modules
из использования встроенных требований (я пытался использовать черный список безрезультатно), но временно я смог заставить его работать нормально, изменив путь моего util
папка должна быть @my-project/util
, чтобы избежать конфликтов в будущем.
Надеюсь, это поможет всем, кто столкнется с той же проблемой в будущем :)