Не удается найти модуль при добавлении репо с пряжей в качестве менеджера пакетов

У меня возникли проблемы с добавлением репозитория github в мой монорепозиторий Yarn. Репозиторий, который я хочу добавить, имеет скомпилированный код TS для модуля commonjs и es в папке dist.

Я добавил репозиторий, который хочу использовать, в package.json в следующем формате:

  "dependencies": {
    "@foo/some-lib": "[email protected]:zantinger/some-lib.git"
  }

но я продолжаю получать сообщение об ошибке "Не удается найти модуль..." (думаю, с моего языкового сервера LSP).

Я могу подтвердить, что веб-пакет может собрать проект, даже с диагностической ошибкой от LSP-сервера. Так что это похоже на проблему с tsserver.

Вот что я пробовал до сих пор:

  • Я подтвердил, что пакет существует в репозитории github. и что у меня есть к нему доступ.
  • Я попытался очистить кеш Yarn и переустановить зависимости, но это не решило проблему.
  • Я проверил файл .yarnrc и убедился, что в нем нет конфликтует с другими зависимостями.
  • Я использую Yarn 2 как монорепозиторий с нулевой установкой и активным PnP.
  • Я также попытался добавить URL-адрес репозитория в поле разрешений в package.json, но и это не помогло.
  • Я использую typescript в обоих проектах.
  • Я нашел добавленный репозиторий в .yarn/cache/... в виде файлов .zip.

Есть ли способ добавить репозиторий github в монорепозиторий Yarn с нулевой установкой и активным PnP? Любые предложения о том, что еще я мог бы попытаться решить эту проблему?

Я использую:

Не стесняйтесь взглянуть на мои примеры репозиториев:

не могли бы вы предоставить результат yarn run consumer --verbose, попробуйте запустить потребительский проект с флагом --verbose, чтобы получить больше информации о том, что делает Yarn при разрешении зависимости...

Manoj Kumar 07.04.2023 20:34

возможно, вы захотите перепроверить основной индекс и индекс модуля.. { .. "main": "dist/lib/es5/index.js", "module": "dist/lib/es6/index.js", .. } ... вы должны убедиться, что скомпилированные файлы действительно существуют в папке dist репозитория библиотеки и что они фиксируются в репозитории.

Manoj Kumar 07.04.2023 20:39

Привет @ManojKumar, кажется, --verbose не поддерживается. Скомпилированные файлы находятся в потребительском репозитории из-за нулевой установки пряжи: github.com/zantinger/some-consumer/blob/main/.yarn/cache/… Я могу открыть zip-файлы с помощью neovim и я видим скомпилированные файлы и определения типов (.d.ts).

Zantinger 07.04.2023 20:48

@Zantinger, если вы игнорируете ошибки TS, можете ли вы импортировать их во время выполнения? Или с асинхронным import()? (т.е. это ошибка типа или ошибка времени выполнения)

Dimava 07.04.2023 23:05

Интересный. webpack может успешно собрать код. Встроенный в код console.info отображается у меня в браузере. Даже если позиция, отображаемая сервером LSP как ошибка, не снабжена параметром @ts-ignore.

Zantinger 08.04.2023 18:30

Теперь я смог решить проблему сам. Машинопись нуждается в скд из пряжи. Я пытался установить его раньше, но не знал, что typescript должен существовать как зависимость в корневом каталоге. У меня был только машинописный текст в рабочих областях как зависимость от разработчиков. добавление машинописного текста в качестве зависимости на корневом уровне и запуск пряжи dlx @yarnpkg/sdks vim снова устранили проблему. В любом случае большое спасибо тем, кто уделил время моей проблеме.

Zantinger 11.04.2023 11:50

Пожалуйста, не добавляйте ответы ни в сам вопрос, ни в комментарии. Вместо этого вы должны добавить его в качестве ответа. Отвечать на свой вопрос разрешается и даже приветствуется.

Adriaan 11.04.2023 11:55
Зод: сила проверки и преобразования данных
Зод: сила проверки и преобразования данных
Сегодня я хочу познакомить вас с библиотекой Zod и раскрыть некоторые ее особенности, например, возможности валидации и трансформации данных, а также...
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Мне нравится библиотека Mantine Component , но заставить ее работать без проблем с Remix бывает непросто.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
TypeScript против JavaScript
TypeScript против JavaScript
TypeScript vs JavaScript - в чем различия и какой из них выбрать?
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Не все нужно хранить на стороне сервера. Иногда все, что вам нужно, это постоянное хранилище на стороне клиента для хранения уникальных для клиента...
Что такое ленивая загрузка в Angular и как ее применять
Что такое ленивая загрузка в Angular и как ее применять
Ленивая загрузка - это техника, используемая в Angular для повышения производительности приложения путем загрузки модулей только тогда, когда они...
1
7
343
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Теперь я смог решить проблему сам. Машинопись нуждается в скд из пряжи. Я пытался установить его раньше, но не знал, что typescript должен существовать как зависимость в корневом каталоге. У меня был только машинописный текст в рабочих областях как зависимость от разработчиков. добавление машинописного текста в качестве зависимости на корневом уровне и запуск пряжи dlx @yarnpkg/sdks vim снова устранили проблему.

@Zantinger уже дал решение, но для тех, кто все еще сомневается, есть страница в документах Yarn, посвященная этой теме. Вы можете проверить лучший для вас вариант, например, я использую неовим, такой же, как в вопросе, поэтому, следуя доку, я побежал yarn dlx @yarnpkg/sdks base и бинго! Оно работает.

Другие вопросы по теме