Обновление зависимости разрушает другую, которая также использует ее (транзитивную)

В моем проекте angular я недавно обновил rxjs до версии 6. Теперь модуль из npm (внутри папки node_modules) дает сбой из-за некоторых критических изменений (старый импорт больше не работает). Я адаптировал импорт для своего кода, но как мне исправить его для зависимости (angular2-markdown), которую я использую?

Я хотел бы использовать старую зависимость rxjs для модуля angular2-markdown и новую для своего кода. Это возможно? Я думал, что package-lock.json позаботится о том, чтобы это все еще работало, но я не нашел записи, которая устанавливает зависимость для angular2-markdown.


person codepleb    schedule 05.08.2018    source источник


Ответы (2)


Вы также можете проверить библиотеку rxjs-compat, которая добавит поддержку более старого кода версии Rxjs. https://www.npmjs.com/package/rxjs-compat

Вы можете установить с помощью npm i rxjs-compat.

Для большей безопасности удалите node_modules, файл package-lock.json и выполните новую установку npm.

person Suresh Kumar Ariya    schedule 05.08.2018
comment
Спасибо, я сделал это после того, как возился с package-lock.json. Должна быть возможность добавить туда старую зависимость rxjs afaik. Он работал правильно (нашел версию и добавил ее со своим хешем и всем в файле блокировки), но он почему-то не используется этим конкретным модулем. Я получаю ту же ошибку. - person codepleb; 05.08.2018

Не уверен, в чем ваша проблема. Большинство людей ужасно справляются со своими депрессиями. Достаточно сказать, пытались ли вы переключиться на ngx-md, что является советом, данным на устаревшей странице angular2-markdown npm - https://www.npmjs.com/package/angular2-markdown

У меня была аналогичная проблема при обновлении до ng6 с пакетом diff. Я прервал обновление ng6. Перешли на новый пакет. Затем сделал обновление ng6, и это сработало. Не уверен, что это лучший подход для вас, но когда вы выполняете обновление ng6, есть много движущихся частей, поэтому лучше всего уменьшить количество вносимых изменений, делая как можно меньше за раз, а затем тестируя их и сохраняя в git перед перемещением. к следующей части.

Кроме того, я надеюсь, что вы выполнили обновление ng6 с помощью обновления ng, как описано на странице ng6 здесь — https://blog.angular.io/version-6-of-angular-now-available-cc56b0efa7a4

PS Вы не упоминаете обновление ng6, но обновление rxJS 6 предоставляется бесплатно с обновлением ng6, поэтому предположение извините, если оно неверно.

PPS Используете ли вы rxjs-compat, который позволит вам перейти на rxJS 6, в то же время позволяя некоторым частям вашего кода использовать старый подход, что предотвращает поломки. Опять же, это бесплатно, когда вы делаете обновление ng6 - ссылка выше говорит о rxjs-compat BTW.

person danday74    schedule 05.08.2018
comment
Я обновился до нг6, ага. Я заметил обновление rxjs, которое вызывает проблемы. После множества проб с файлом package-lock.json я просто добавил rxjs-compat. Спасибо. Однако эту проблему можно решить, добавив более старую зависимость rxjs в раздел модуля angular2-markdown в package-lock.json. Если кто-нибудь придумает решение для этого, я думаю, я соглашусь с этим, потому что это то, о чем этот вопрос в основном. +1 и большое спасибо за вашу помощь! :) - person codepleb; 05.08.2018
comment
На package-lock.json влияют 3 вещи (1) package.json (2) предыдущая папка package-lock.json (3) node_modules — поэтому она может запутаться — попробуйте удалить node_modules и ваш предыдущий файл блокировки, а затем запустите npm install — иногда он создавал для меня гораздо более чистый файл блокировки (если package.json поддерживается должным образом), в других случаях он может полностью сломать приложение, лол — попробовать стоит — просто убедитесь, что вы можете вернуться к предыдущему файлу блокировки, если нужно быть - person danday74; 05.08.2018