Проблемы с быстрым обновлением: NextJs некорректно работают с локальным пакетом. Как я могу принудительно очистить кеш во время разработки?
У меня есть приложение, созданное с помощью NextJs (и React) и mobx-state-tree (но может быть контекстом или redux) в качестве диспетчера пакетов. Все магазины создаются и обрабатываются в пакете npm под названием SMK (набор для управления состоянием), который я создал, чтобы сделать вспомогательные магазины повторно используемыми в моем мобильном и веб-приложении.
Как это работает:
- Создайте дополнительный магазин с
models
,actions
иviews
на SMK и экспортировать его как модуль. - Добавьте SMK, используя
yarn add @my-repo/smk
. - Создайте корневое хранилище в моем приложении и импортируйте вспомогательное хранилище из SMK в качестве дочернего хранилища корневого хранилища.
- Скомпилируйте и запустите приложение, и все работает нормально.
Но мне нужно запустить и опубликовать SMK локально, чтобы упростить разработку. Решение, которое я использовал, - yalc.
Используя yalc и запустите его локально, это процесс:
- В СМК работает. (Это будет делать
nodemon --ignore src/index.ts -e js,ts,tsx,json --watch src/ --exec yalc push --scripts
) - В приложении запускается
yalc add @my-repo/smk
. (Это добавит зависимость вроде"@my-repo/smk": "file:.yalc/@my-repo/smk"
). - В приложении запускается
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"
}