angular проект npm модули удалены случайным образом - PullRequest
0 голосов
/ 17 июня 2020

У меня самая странная проблема, которую я когда-либо видел, с npm, когда в середине работы angular ng serve пакеты с обоих узлов и для angular случайно пропадают go. В середине сохранения проект внезапно не перекомпилируется и будет жаловаться на отсутствующий модуль. Каждый раз это было по-другому, но до сих пор у меня было:

Error: ENOENT: no such file or directory, open '.../node_modules/core-js/internals/hidden-keys.js'

Module not found: Error: Can't resolve '../internals/is-pure' in '/.../node_modules/@angular-devkit/build-angular/node_modules/core-js/internals'

An unhandled exception occurred: Cannot find module './internal/streams/stream

An unhandled exception occurred: Cannot find module '/.../node_modules/minipass-collect/node_modules/minipass/index.js'. 

Please verify that the package.json has a valid "main" entry

Это были только ошибки последних нескольких дней, но подобные проблемы случались все время. до такой степени, что мне нужно удалить node_modules и переустановить все через npm хотя бы раз в день. Я думаю, что ошибка больше связана с узлом или NPM, чем с моей настройкой Angular, поскольку некоторые из этих недостающих пакетов кажутся базовыми пакетами узла.

Я уже пробовал переустановить npm глобально через npm install -g npm, и это ничего не помогло. Боюсь, что мне придется просто полностью переустановить узел.

Любая помощь будет принята с благодарностью, спасибо.

EDIT: при дальнейшей отладке я заметил, что отсутствующие модули всегда из @angular-devkit/build-angular/node_modules/core-js/modules. Помимо потери случайных модулей, таких как 'is-pure', приложение также будет случайным образом перекомпилировать много раз при запуске ng serve

1 Ответ

0 голосов
/ 25 июня 2020

Я разобрался в чем дело, если у кого-нибудь в будущем будет такая же проблема. Оказывается, ответ не имеет ничего общего с моей испорченной конфигурацией npm. Я не понимал, что на новых Macbook любой каталог на рабочем столе автоматически управляется iCloud. В какой-то момент, вероятно, более старая версия кода до того, как я перешел на Angular 9, синхронизировала старый код с моим проектом. Мне удалось решить эту проблему, изменив имя родительского каталога, в котором находился мой проект, с filename на filename.nosync. Добавление '.nosyn c' заставляет iCloud игнорировать синхронизацию всего, что находится в этом файле. Я знаю, что должен был это уловить, но, надеюсь, это поможет любым пользователям ma c в будущем, которые будут испытывать подобные проблемы.

...