Yarn 3.1, Vite 2.9, не может найти пакет vite

При попытке создать приложение с помощью Vite я вижу ошибку. Если я правильно понимаю, похоже, есть проблема с разрешением Yarn PnP зависимостей (больше нет node_modules), и Vite, похоже, не улавливает этого? Как я могу заставить Vite понять, что node_modules больше не существует?

Обновлять: Здесь воспроизведен тестовый пример: https://github.com/michaeljohansen/vite-test-кейс — кажется, что ошибка исчезает, если удалить "type": "module" из package.json, но для меня это пока не имеет смысла и создает другие проблемы для моего бэкэнда Node.

$ yarn run vite --config vite.config.js
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'vite' imported from /Users/me/project/vite.config.js
Did you mean to import vite-virtual-ec56a6c02a/0/cache/vite-npm-2.9.13-cda1bb45b9-a5e501b920.zip/node_modules/vite/dist/node/index.js?
    at new NodeError (node:internal/errors:377:5)
    at packageResolve (node:internal/modules/esm/resolve:910:9)
    ...
// vite.config.js excerpt
import { defineConfig } from 'vite';

export default defineConfig(({ command, mode }) => {
  ...
});

Я не могу воспроизвести проблему. Не поделитесь ссылкой на воспроизведение проблемы?

tony19 10.07.2022 21:41

Абсолютно, вот: github.com/michaeljohansen/vite-test-case - Кроме того, ошибка, кажется, исчезает, если удалить "type": "module" из package.json, но для меня это пока не имеет смысла.

Michael Johansen 11.07.2022 01:05

Если я установлю для пряжи значение 3.1.1, я получу другую ошибку, связанную с pnp.cjs. С другой стороны, установив для пряжи последнюю версию berry (3.2.1), ошибок не возникает вообще. Есть ли причина, по которой вы все еще на 3.1?

tony19 11.07.2022 02:28

К сожалению, то же самое произошло с Yarn v3.2.1.

Michael Johansen 13.07.2022 22:20

Каково ваше окружение? Моя: macOS Big Sur, узел 17.4.0

tony19 13.07.2022 23:10

macOS Monterey, процессор M1, Node 18.5.0, Yarn 3.2.1, Vite 2.9.13.

Michael Johansen 14.07.2022 18:56

Это репо работает только для меня с Node 18.3 и 18.5. Не работает на 18.6. Можете ли вы включить туда свои .pnp.cjs и .yarnrc.yml?

Anton Mihaylov 15.07.2022 22:39

Оказывается, мне нужно было обновить Yarn до 3.2.1, но я забыл обновить поле packageManager в package.json с помощью Yarn 3.2.1. Bounty присуждается за ответ, который посоветовал мне обновить версию Yarn. Кроме того, @AntonMihaylov отправил .pnp.cjs сейчас, у меня еще нет .yarnrc.yml для этого репо.

Michael Johansen 16.07.2022 23:28
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
8
309
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вам необходимо перейти на пряжу 3.2.0 или выше.

yarn set version stable 
# or 
yarn set version 3.2.0

И запустите yarn install, чтобы обновить .pnp.cjs. Узнайте больше на Журнал изменений, что они обрабатывают модули ESM и commonjs.

К сожалению, все еще не работает. Он начинает работать только в том случае, если я удаляю "type": "module" из package.json, но это создает проблемы для моего бэкэнда Node, поэтому на самом деле это не вариант. Мне пришлось прекратить использовать Yarn PnP и вернуться к использованию nodeLinker: node-modules в моем .yarnrc.yml. Узел 18.5.0, Пряжа 3.2.1, Вите 2.9.13.

Michael Johansen 14.07.2022 18:55

Обновление: кажется, это работает, когда я также изменил версию Yarn в package.json, поэтому ваш ответ кажется правильным. Присуждение награды сейчас. Спасибо!

Michael Johansen 16.07.2022 23:22

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