Skip to content
На этой странице

Free Online Conference

ViteConf - Oct 11

Get your ticket now!

Исправление проблем

Смотрите Руководство по устранению неполадок Rollup для получения дополнительной информации.

Если приведенные здесь предложения не работают, попробуйте опубликовать вопросы в Обсуждения GitHub или на канале #help в Vite Land Discord.

CLI

Error: Cannot find module 'C:\foo\bar&baz\vite\bin\vite.js'

Путь к папке вашего проекта может включать &, что не работает с npm в Windows (npm/cmd-shim#45).

Вам нужно будет либо:

  • Переключитесь на другой менеджер пакетов (например, pnpm, yarn)
  • Удалите & из пути к вашему проекту

Сервер разработки

Запросы задерживаются навсегда

Если вы используете Linux, причиной проблемы могут быть ограничения файловых дескрипторов и ограничения inotify. Поскольку Vite не объединяет большинство файлов, браузеры могут запрашивать много файлов, для которых требуется много файловых дескрипторов, что превышает лимит.

Чтобы решить эту проблему:

  • Увеличьте лимит дескриптора файла на ulimit

    shell
    # Check current limit
    $ ulimit -Sn
    # Change limit (temporary)
    $ ulimit -Sn 10000 # You might need to change the hard limit too
    # Restart your browser
    
  • Увеличьте следующие ограничения, связанные с inotify, с помощью sysctl

    shell
    # Check current limits
    $ sysctl fs.inotify
    # Change limits (temporary)
    $ sudo sysctl fs.inotify.max_queued_events=16384
    $ sudo sysctl fs.inotify.max_user_instances=8192
    $ sudo sysctl fs.inotify.max_user_watches=524288
    

431 Поля заголовка запроса слишком велики

Когда сервер / сервер WebSocket получает большой HTTP-заголовок, запрос будет отброшен, и будет показано следующее предупреждение.

Server responded with status code 431. See https://vitejs.ru/guide/troubleshooting.html#_431-request-header-fields-too-large.

Это связано с тем, что Node.js ограничивает размер заголовка запроса для смягчения последствий CVE-2018-12121.

Чтобы этого избежать, попробуйте уменьшить размер заголовка запроса. Например, если файл cookie длинный, удалите его. Или вы можете использовать --max-http-header-size, чтобы изменить максимальный размер заголовка.

HMR

Vite обнаруживает изменение файла, но HMR не работает

Возможно, вы импортируете файл с другим регистром. Например, src/foo.js существует, а src/bar.js содержит:

js
import './Foo.js' // should be './foo.js'

Связанная проблема: #964

Vite не обнаруживает изменение файла

Если вы используете Vite с WSL2, Vite не может отслеживать изменения файлов в некоторых условиях. Смотрите параметр server.watch.

Происходит полная перезагрузка вместо HMR

Если HMR не обрабатывается Vite или плагином, произойдет полная перезагрузка.

Также, если есть цикл зависимости, произойдет полная перезагрузка. Чтобы решить эту проблему, попробуйте удалить цикл.

Сборка

Встроенный файл не работает из-за ошибки CORS

Если вывод HTML-файла был открыт с использованием протокола file, сценарии не будут запускаться со следующей ошибкой.

Access to script at 'file:///foo/bar.js' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, isolated-app, chrome-extension, chrome, https, chrome-untrusted.

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at file:///foo/bar.js. (Reason: CORS request not http).

Смотрите Причина: запрос CORS не HTTP - HTTP | MDN для получения дополнительной информации о том, почему это происходит.

Вам нужно будет получить доступ к файлу по протоколу http. Самый простой способ добиться этого — запустить npx vite preview.

Другие

Произошла ошибка синтаксиса/ошибка типа

Vite не может обрабатывать и не поддерживает код, который работает только в нестрогом режиме (небрежный режим). Это связано с тем, что Vite использует ESM и всегда строгий режим внутри ESM.

Например, вы можете увидеть эти ошибки.

[ERROR] With statements cannot be used with the "esm" output format due to strict mode

TypeError: Cannot create property 'foo' on boolean 'false'

Если этот код используется внутри зависимостей, вы можете использовать patch-package (или yarn patch или pnpm patch) для эвакуационного люка.

Выпущено под лицензией MIT. (dev)