Проблемы с быстрым обновлением: NextJs некорректно работают с локальным пакетом. Как я могу принудительно очистить кеш во время разработки?

У меня есть приложение, созданное с помощью NextJs (и React) и mobx-state-tree (но может быть контекстом или redux) в качестве диспетчера пакетов. Все магазины создаются и обрабатываются в пакете npm под названием SMK (набор для управления состоянием), который я создал, чтобы сделать вспомогательные магазины повторно используемыми в моем мобильном и веб-приложении.

Как это работает:

  1. Создайте дополнительный магазин с models, actions и views на SMK и экспортировать его как модуль.
  2. Добавьте SMK, используя yarn add @my-repo/smk.
  3. Создайте корневое хранилище в моем приложении и импортируйте вспомогательное хранилище из SMK в качестве дочернего хранилища корневого хранилища.
  4. Скомпилируйте и запустите приложение, и все работает нормально.

Но мне нужно запустить и опубликовать SMK локально, чтобы упростить разработку. Решение, которое я использовал, - yalc.

Используя yalc и запустите его локально, это процесс:

  1. В СМК работает. (Это будет делать nodemon --ignore src/index.ts -e js,ts,tsx,json --watch src/ --exec yalc push --scripts)
  2. В приложении запускается yalc add @my-repo/smk. (Это добавит зависимость вроде "@my-repo/smk": "file:.yalc/@my-repo/smk").
  3. В приложении запускается yarn build а потом yarn start

И вуаля! Все работает идеально, любые изменения, которые я сделал локально в моем SMK, отлично работают в приложении.

НО, когда я бегу, next devпо умолчанию NextJs не работает.

Это ошибка, с которой я столкнулся:

Объяснение ошибки: поскольку я только добавил setTestingState и testingState на местном уровне он говорит, что его не существует.

Возможная причина: быстрое обновление не обновляет кеш должным образом.

Я пробовал:

  • Добавлять // @refresh reset заставить его, но не сработало.
  • Остановите и запустите приложение.
  • Скомпилируйте, запустите, а затем запустите dev. (работает для сборки, а не для разработчиков)

Какое решение / обходной путь для решения этой проблемы с yarn dev и yalc?

1 ответ

Похоже, это ошибка в NextJs, и мы можем найти некоторых разработчиков, которые просят NextJs разрешить нам отключить быстрое обновление, и похоже, что им все равно или они просто не собираются его менять.

Итак, я нашел стороннюю библиотеку next-remote-watch, которая решает эту проблему за меня. По сути, это альтернативный сценарий для использования вместо next devи это быстро и просто создаст и активирует наблюдателя.

В package.jsonиспользовать

      "scripts": {
   "start": "next-remote-watch @my-repo/smk"
}
Другие вопросы по тегам