Содержание

🚀 Начало работы

Parcel — это упаковщик для веб-приложений для разработчиков с различным опытом. Он предлагает великолепную быструю работу с использованием многоядерной обработки и не требует настройки.

Сначала установите Parcel с помощью Yarn или npm:

Yarn:

yarn global add parcel-bundler

npm:

npm install -g parcel-bundler

Создайте файл package.json в папке вашего проекта, используя:

yarn init -y

или

npm init -y

Parcel может принимать любой тип файла в качестве точки входа, но лучше всего использовать файл HTML или JavaScript. Если вы подключили свой основной JavaScript-файл в HTML, используя относительный путь, Parcel также обработает его для вас и заменит ссылку URL-адресом на выходной файл.

Далее создайте файлы index.html и index.js.

<html>
<body>
  <script src="./index.js"></script>
</body>
</html>
console.log('Привет, Мир!')

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

Просто выполните команду:

parcel index.html

Теперь откройте http://localhost:1234/ в браузере. Если горячая заменя модулей не работает, возможно вам нужно настроить ваш редактор кода. Вы также можете переопределить порт по умолчанию, с помощью опции параметра -p <port number>.

Используйте сервер разработки, если у вас нет собственного сервера или ваше приложение полностью отрисовывается на клиенте. Если у вас есть собственный сервер, вы можете запустить Parcel в режиме watch. Этот режим по-прежнему будет автоматически пересобирать приложение при измении файлов и поддерживает горячую замену модулей, но не запускает веб-сервер.

parcel watch index.html

Вы так же можете воспользоваться сервисом createapp.dev чтобы создать Parcel-проект в браузере. Выбирайте компоненты, которые вам нужны, например React, Vue, Typescript или CSS, и вы увидите сгенерированный в реальном времени шаблон проекта. Вы можете использовать этот сервис в качестве примера настройки нового проекта. Или даже загрузить ZIP-архив с готовым шаблоном и сразу начать работу.

Несколько точек входа

В случае, если в вашем приложении более одной точки входа, например index.html и about.html, у вас есть два варианта запуска Parcel:

Указать пути к файлам:

parcel index.html about.html

Использовать glob-правило:

parcel *.html

Обратите внимание: В случае, если в вашем проекте структура директорий похожа на следующую:

- folder-1
-- index.html
- folder-2
-- index.html

То переход к http://localhost:1234/folder-1/ не будет работать. Вместо этого вы должны обращаться точно к html-файлу: http://localhost:1234/folder-1/index.html.

Сборка для продакшена

Когда вы готовы для продакшен-сборки, команда Parcel

build не будет отслеживать изменения файлов и просто соберет приложение только один раз. Смотрите подробности в разделе Работа в продакшене.

Добавление Parcel в ваш проект

Бывает, что установить Parcel глобально нет возможности — например, если у вас нет root-доступа к системе или вы используете CI для автоматической сборки вашего проекта. В таком случае вы можете установить и использовать Parcel как локальный пакет.

Чтобы установить с помощью Yarn:

yarn add parcel-bundler --dev

Чтобы установить с помощью NPM:

npm install parcel-bundler --save-dev

Далее, добавьте следующие скрипты в package.json вашего проекта:

{
  "scripts": {
    "dev": "parcel <your entry file>",
    "build": "parcel build <your entry file>"
  }
}

Теперь вы можете запускать их из консоли:

# Для запуска в режиме разработки
yarn dev
# or
npm run dev
# Для запуска продакшен-сборки
yarn build
# or
npm run build

Помогите нам улучшить документацию

Если что-то отсутствует или не совсем понятно, пожалуйста опишите проблему в репозитории сайта или отредактируйте эту страницу.

Вопросы и ответы о подсистема Windows для Linux

Изменить

Twitter LinkedIn Facebook Адрес электронной почты

  • Вопросы и ответы

Что такое подсистема Windows для Linux (WSL)?

Подсистема Windows для Linux (WSL) — это функция операционной системы Windows, которая позволяет запускать файловую систему Linux, а также программы командной строки Linux и приложения графического пользовательского интерфейса непосредственно в Windows, наряду с традиционными классическими приложениями и приложениями Windows.

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

Для кого предназначена WSL?

В первую очередь это средство для разработчиков, особенно веб-разработчиков, работающих над открытый код проектами или развертывающихся в серверных средах Linux. WSL предназначен для тех, кто любит использовать Bash, распространенные инструменты Linux (sed, awkи т. д.) и платформы Linux (Ruby, Python и т. д.), но также пользуется инструментами для повышения производительности Windows

Что можно сделать с помощью WSL?

WSL позволяет запускать Linux в оболочке Bash с выбранным дистрибутивом (Ubuntu, Debian, OpenSUSE, Kali, Alpine и т. д.). С помощью Bash можно запускать программы командной строки и приложения Linux. Например, введите

lsb_release -a и нажмите клавишу ВВОД. Вы увидите сведения о текущем запущенном дистрибутиве Linux.

Вы также можете получить доступ к файловой системе локального компьютера из оболочки Bash Для Linux вы найдете подключенные локальные диски в папке /mnt . Например, диск C: подключается в /mnt/c.

Опишите типичный рабочий процесс разработки с использованием WSL

Подсистема WSL нацелена на аудиторию разработчиков и предназначена для использования в рамках внутреннего цикла разработки. Предположим, Семен создает конвейер CI/CD (Непрерывная интеграции & Непрерывная поставка) и хочет сначала протестировать его на локальном компьютере (ноутбуке) перед развертыванием в облаке. Семен может включить WSL (& WSL 2, чтобы повысить скорость и производительность), а затем использовать подлинный экземпляр Linux Ubuntu на локальном компьютере (ноутбуке) с любыми командами Bash и инструментами по своему выбору. После проверки конвейера разработки в локальной среде Семен может отправить этот конвейер CI/CD в облако (т. е. в Azure), сделав его контейнером Docker и отправив в облачный экземпляр, где он будет выполняться на рабочей виртуальной машине Ubuntu.

Что такое Bash?

Bash — это популярная текстовая оболочка и язык команд. Это оболочка по умолчанию, включенная в Ubuntu и другие дистрибутивы Linux. Пользователи могут вводить команды в оболочке для выполнения сценариев и (или) команд и инструментов, чтобы выполнять множество задач.

Как это работает?

Ознакомьтесь с этой статьей в блоге командной строки Windows: Подробное изучение того, как WSL позволяет Windows получать доступ к файлам Linux , в которой подробно описана базовая технология.

Зачем использовать WSL вместо Linux в виртуальной машине?

WSL требует меньше ресурсов (ЦП, памяти и хранилища), чем полноценная виртуальная машина. WSL также позволяет запускать программы командной строки и приложения Linux вместе с приложениями командной строки, классическими приложениями и приложениями Store для Windows, а также позволяет обращаться к файлам Windows в Linux. Это позволяет использовать приложения для Windows и программы командной строки Linux для одного и того же набора файлов, если требуется.

Зачем использовать, например, Ruby в Linux, а не Ruby в Windows?

Некоторые кроссплатформенные инструменты были созданы, исходя из предположения, что среда, в которой они выполняются, работает как Linux.

Например, некоторые инструменты предполагают, что имеют доступ к очень длинным путям к файлам или что существуют определенные файлы и папки. Это часто вызывает проблемы в среде Windows, которая нередко ведет себя иначе, чем в Linux.

Многие языки, такие как Ruby и Node.js, часто переносятся в Windows и работают отлично. Тем не менее, не все владельцы библиотек Ruby Gem или node/NPM переносят свои библиотеки для поддержки Windows, и многие из них имеют зависимости, относящиеся к Linux. Это часто может привести к тому, что системы, созданные с помощью таких инструментов и библиотек, становятся подвержены ошибкам во время сборки, а иногда — во время выполнения, либо не работают в Windows требуемым образом.

Это лишь часть проблем, из-за которых многие пользователи просят корпорацию Майкрософт улучшить программы командной строки Windows, а мы стали партнерами с Canonical, чтобы обеспечить выполнение собственных программ командной строки Linux и Bash в Windows.

Что это означает для PowerShell?

При работе с проектами OSS существует множество сценариев, в которых чрезвычайно полезно перейти в Bash из командной строки PowerShell. Поддержка Bash дополняет и расширяет возможности командной строки в Windows, позволяя использовать PowerShell, а сообществу PowerShell — применять другие популярные технологии.

Дополнительные сведения см. в блоге группы разработчиков PowerShell: Bash for Windows: Why it’s awesome and what it means for PowerShell (Bash для Windows: почему это здорово и что это значит для PowerShell)

Какие процессоры поддерживает WSL?

WSL поддерживает процессоры x64 и Arm.

Как получить доступ к моему диску C?

Точки подключения для жестких дисков на локальном компьютере создаются автоматически и обеспечивают простой доступ к файловой системе Windows.

/mnt/<drive letter>/

Пример использования — команда cd /mnt/c для доступа к диску C:\

Как настроить диспетчер учетных данных Git? (Как использовать разрешения Windows Git в WSL?)

Ознакомьтесь с руководством Приступая к работе с Git на подсистема Windows для Linux, в котором содержится раздел о настройке диспетчера учетных данных Git и хранении маркеров проверки подлинности в диспетчере учетных данных Windows.

Как использовать файл Windows в приложении Linux?

Одним из преимуществ WSL является возможность доступа к файлам с помощью приложений или инструментов Windows и Linux.

WSL подключает несъемные диски вашего компьютера к папке /mnt/<drive> в ваших дистрибутивах Linux. Например, диск C: подключается в /mnt/c/.

Используя подключенные диски, можно изменить код, например, в C:\dev\myproj\ с помощью Visual Studio или VS Code, а также выполнить сборку или тестирование этого кода в Linux, воспользовавшись этими же файлами в /mnt/c/dev/myproj.

Дополнительные сведения см. в статье Работа с файловой системой Windows и Linux .

Отличаются ли файлы на диске Linux от файлов на подключенном диске Windows?

  1. Файлы в корневом каталоге Linux (т. е. /) управляются WSL, который соответствует поведению Linux, включая, помимо прочего, следующие:

    • файлы, содержащие в имени файла недопустимые знаки для Windows;
    • символические ссылки, созданные для пользователей без прав администратора;
    • изменение атрибутов файла с помощью chmod и chown;
    • учет регистра в именах файлов и папок.
  2. Файлы на подключенных дисках контролируются Windows и имеют следующие характеристики:

    • поддерживают учет регистра;
    • все разрешения заданы для наилучшего отражения разрешений Windows.

Как удалить дистрибутив WSL?

Чтобы удалить дистрибутив из WSL и удалить все данные, связанные с этим дистрибутивом Linux, выполните команду wsl --unregister <distroName> , где <distroName> — это имя дистрибутива Linux, которое можно увидеть из списка в команде wsl -l .

Кроме того, вы можете удалить приложение дистрибутива Linux на компьютере так же, как и любое другое приложение магазина.

Дополнительные сведения о командах wsl см. в статье Основные команды для WSL.

Как запустить сервер OpenSSH?

OpenSSH поставляется с Windows в качестве необязательной функции. См. документацию по установке OpenSSH . Для запуска OpenSSH в WSL требуются права администратора в Windows. Чтобы запустить сервер OpenSSH, запустите дистрибутив WSL (например, Ubuntu) или Терминал Windows от имени администратора. Существует несколько ресурсов, посвященных сценариям SSH с WSL. Ознакомьтесь со статьями в блоге Скотта Хансельмана: How to SSH into a Windows 10 machine from Linux OR Windows OR anywhere, How to SSH into WSL2 on Windows 10 from a external machine, THE EASY WAY how to SSH in Bash and WSL2 on Windows 10 from an external machine, and How to use Windows 10 Встроенный OpenSSH для автоматического подключения SSH к удаленному компьютеру Linux.

Как изменить язык интерфейса WSL?

Установщик WSL попытается автоматически изменить языковой стандарт Ubuntu в соответствии с языковым стандартом установки Windows. Если это нежелательно, можно выполнить приведенную ниже команду, чтобы изменить языковой стандарт Ubuntu после завершения установки. Чтобы это изменение войло в силу, потребуется повторно запустить дистрибутив WSL.

В приведенном ниже примере языковой стандарт изменяется на EN-US.

sudo update-locale LANG=en_US.UTF8

Почему у меня нет доступа к Интернету из WSL?

Некоторые пользователи сообщили о проблемах с определенными приложениями брандмауэра, блокирующими доступ к Интернету в WSL. Сообщили о следующих брандмауэрах:

  1. Kaspersky;
  2. AVG;
  3. Avast.
  4. Symantec Endpoint Protection
  5. F-Secure

В некоторых случаях отключение брандмауэра обеспечивает доступ. В некоторых случаях доступ блокируется просто при наличии установленного брандмауэра.

Как получить доступ к порту из WSL в Windows?

WSL использует IP-адрес Windows, так как работает в Windows. Поэтому вы можете получить доступ к любым портам на localhost. Например, если вы предоставляете веб-содержимое через порт 1234, то вы можете открыть адрес https://localhost:1234 в браузере для Windows. Дополнительные сведения см. в разделе Доступ к сетевым приложениям.

Как создать резервную копию дистрибутивов WSL или переместить их с одного диска на другой?

Лучший способ резервного копирования или перемещения дистрибутивов — с помощью команд экспорта и импорта, доступных в Windows версии 1809 и более поздних версий. Вы можете экспортировать весь дистрибутив в архив tarball с помощью команды wsl --export. Затем вы можете импортировать этот дистрибутив обратно в WSL с помощью wsl --import команды , которая может назвать новое расположение диска для импорта, что позволяет создавать резервные копии и сохранять состояния (или перемещать) дистрибутивы WSL.

Обратите внимание, что традиционные службы резервного копирования, которые резервное копирование файлов в папках AppData (например, программа архивации данных), не повреждают файлы Linux.

Можно ли использовать WSL для рабочих сценариев?

WSL разработан и создан для использования с рабочими процессами разработки внутреннего цикла. В WSL есть функции проектирования, которые делают его отличным для этой цели, но могут сделать его сложным для рабочих сценариев по сравнению с другими продуктами. Наша цель состоит в том, чтобы понять, чем WSL отличается от обычной среды виртуальной машины, чтобы вы могли принять решение о том, соответствует ли она вашим бизнес-потребностям.

Основные различия между WSL и традиционной рабочей средой:

  • WSL имеет упрощенную служебную виртуальную машину, которая автоматически запускает, останавливает ресурсы и управляет ими.
  • Если у вас нет открытых дескрипторов файлов для процессов Windows, виртуальная машина WSL будет автоматически выключена. Это означает, что если вы используете его в качестве веб-сервера, в него входит SSH для запуска сервера, а затем выхода, виртуальная машина может завершить работу, так как она обнаруживает, что пользователи закончили использовать ее, и очистит ее ресурсы.
  • Пользователи WSL имеют полный доступ к своим экземплярам Linux. Время существования виртуальной машины, зарегистрированные дистрибутивы WSL и т. д. доступны пользователю и могут быть изменены пользователем.
  • WSL автоматически предоставляет доступ к файлам Windows.
  • Пути Windows добавляются к пути по умолчанию, что может привести к непредвиденному поведению некоторых приложений Linux по сравнению с традиционной средой Linux.
  • WSL может запускать исполняемые файлы Windows из Linux, что также может привести к среде, отличной от среды традиционной виртуальной машины Linux.
  • Ядро Linux, используемое WSL, обновляется автоматически.
  • Доступ к GPU в WSL осуществляется через /dev/dxg устройство, которое направляет вызовы GPU в GPU Windows. Эта настройка отличается от традиционной настройки Linux.
  • Существуют и другие меньшие различия по сравнению с Linux без операционной системы, и, как ожидается, в будущем возникнет больше различий, так как рабочий процесс разработки внутреннего цикла будет приоритетным.

Как перенести WSL-файлы с одного компьютера на другой?

Эту задачу можно выполнить несколькими способами.

  • Самый простой способ — использовать wsl --export --vhd команду для экспорта дистрибутива WSL в VHD-файл. Затем этот файл можно скопировать на другой компьютер и импортировать с помощью wsl --import --vhd. Дополнительные сведения см. в документации по командам .
  • Для реализации выше требуется много места на диске. Если у вас мало места на диске, вы можете использовать методы Linux для перемещения файлов:
    • Используйте tar -czf <tarballName> <directory> для создания tarball файлов. Затем вы можете скопировать эти файлы на новый компьютер и выполнить команду tar -xzf <tarballName> , чтобы извлечь их.
    • Вы также можете экспортировать список установленных пакетов с помощью apt команды, например , dpkg --get-selections | grep -v deinstall | awk '{print $1}' > package_list.txt а затем переустановить те же пакеты на другом компьютере с помощью команды, например sudo apt install -y $(cat package_list.txt) после передачи файла.

Использует ли подсистема WSL 2 Hyper-V? Будет ли она доступна в Windows 10 Домашняя и Windows 11 Домашняя?

WSL 2 доступен на всех номерах SKU классических приложений, где доступен WSL, включая Windows 10 Домашняя и Windows 11 Домашняя.

Последняя версия WSL использует архитектуру Hyper-V для включения виртуализации. Эта архитектура будет доступна в качестве дополнительного компонента Virtual Machine Platform (Платформа виртуальной машины). Этот необязательный компонент будет доступен во всех номерах SKU. Более подробную информацию об этом интерфейсе можно получить ближе к выпуску WSL 2.

Что произойдет с подсистемой WSL 1? Будет ли прекращена ее поддержка?

В настоящее время не планируется объявлять подсистему WSL 1 нерекомендуемой. Вы можете запускать дистрибутивы WSL 1 и WSL 2 параллельно, обновлять их и переходить на более раннюю версию дистрибутива в любое время. Добавление WSL 2 в качестве новой архитектуры для команды WSL представляет собой лучшую платформу, которая предоставляет отличные возможности для запуска среды Linux в Windows.

Смогу ли я запускать WSL 2 с другими сторонними инструментами виртуализации, такими как VMware или VirtualBox?

Если Hyper-V уже используется, то некоторые сторонние приложения не могут работать. Соответственно, они не смогут выполняться при включенном WSL 2, например VMware и VirtualBox. Но недавно вышли новые выпуски VirtualBox и VMware, поддерживающие Hyper-V и WSL2. Дополнительные сведения об изменениях VirtualBox см. здесь, а об изменениях VMware см. здесь. Сведения об устранении неполадок можно найти в обсуждениях проблем с VirtualBox в репозитории WSL на GitHub.

Мы постоянно работаем над решениями для поддержки интеграции Hyper-V от сторонних производителей. Например, мы предоставляем набор API-интерфейсов (платформа гипервизора), который сторонние поставщики виртуализации могут использовать для обеспечения совместимости своего программного обеспечения с Hyper-V. Это позволяет приложениям использовать архитектуру Hyper-V для своих эмуляций, например Google Android Emulator, а также VirtualBox 6 и более поздней версии, которые теперь совместимы с Hyper-V.

Дополнительные сведения о проблемах WSL 2 с VirtualBox 6.1 см. в репозитории проблем WSL.

*Если вы ищете виртуальную машину Windows, скачиваемые виртуальные машины VMWare, Hyper-V, VirtualBox и Parallels можно загрузить в Центре разработки для Windows.

Могу ли я получить доступ к GPU в WSL 2? Планируется ли усилить поддержку оборудования?

Мы выпустили поддержку доступа к GPU в дистрибутивах WSL 2. Это означает, что теперь вы можете использовать WSL для сценариев с применением машинного обучения, искусственного интеллекта, а также обработки и анализа данных, если задействованы большие наборы данных. Ознакомьтесь с руководством по началу работы с решениями с поддержкой GPU. Сейчас WSL 2 не включает последовательную поддержку или поддержку USB-устройств. Мы определяем оптимальный способ добавления этих функций. Однако поддержка USB теперь доступна в проекте USBIPD-WIN. Инструкции по настройке поддержки USB-устройств см. в статье Подключение USB-устройств .

Может ли WSL 2 использовать сетевые приложения?

Да, в целом сетевые приложения будут работать лучше и быстрее с WSL 2, так как они обеспечивают полную совместимость системных вызовов. Однако в архитектуре WSL 2 используются виртуализированные сетевые компоненты, что означает, что WSL 2 будет вести себя так же, как виртуальная машина. Дистрибутивы WSL 2 будут иметь IP-адрес, отличный от IP-адреса хост-компьютера (ОС Windows). Дополнительные сведения см. в статье Доступ к сетевым приложениям с помощью WSL.

Можно ли запустить WSL 2 на виртуальной машине?

Да! Необходимо убедиться, что на виртуальной машине включена вложенная виртуализация. Ее можно включить в родительском узле Hyper-V, выполнив следующую команду в окне PowerShell с правами администратора:

Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true

Не забудьте заменить <VMName> именем своей виртуальной машины.

Можно ли использовать wsl.conf в WSL 2?

WSL 2 поддерживает тот же файл wsl.conf, который использует WSL 1. Это означает, что все параметры конфигурации, заданные в дистрибутиве WSL 1, такие как автоподключение дисков Windows, включение или отключение взаимодействия, изменение каталога, в котором будут подключаться диски Windows, и т. д. будут работать в WSL 2. Дополнительные сведения о параметрах конфигурации в WSL см. на странице Управление распространителями . Дополнительные сведения о поддержке подключения дисков, дисков, устройств или виртуальных жестких дисков (VHD) см. в статье Подключение диска Linux в WSL 2 .

Куда можно отправить отзыв?

Функция обработки проблем в репозитории продуктов WSL позволяет:

  • Выполнять поиск сведений о существующих проблемах, чтобы найти информацию, связанную с возникшей проблемой. Обратите внимание, что в строке поиска можно удалить is:open, чтобы включить в результаты поиска проблемы, которые уже были решены. Рассмотрите возможность комментирования или одобрения любых открытых проблем, чтобы выразить свою заинтересованность в их продвижении в качестве приоритетных.
  • Регистрировать сведения о новых проблемах. Если вы обнаружили проблему с WSL, о которой нет упоминаний, вы можете нажать зеленую кнопку New issue (Новая проблема), а затем выбрать элемент WSL — Bug Report (WSL — отчет об ошибках). Вам нужно будет включить название проблемы, номер сборки Windows (выполните cmd.exe /c ver, чтобы узнать номер текущей сборки), независимо от того, используете ли вы WSL 1 или WSL 2, текущую версию ядра Linux (выполните wsl.exe --status или cat /proc/version), номер версии дистрибутива (выполните lsb_release -r), а также любые другие версии используемого программного обеспечения, сведения о действиях для воспроизведения, ожидаемом поведении, фактическом поведении, а также журналы диагностики, если они доступны и применимы. Дополнительные сведения см. в разделе, посвященном вкладу в WSL.
  • Отправить запрос на функцию, нажав зеленую кнопку New issue (Новая проблема) и выбрав Feature request (Запрос на функцию). Вам нужно будет ответить на несколько вопросов, описывающих ваш запрос.

Кроме того, вы можете сделать следующее:

  • Зарегистрировать сведения о проблеме с документацией, используя репозиторий документов WSL. Чтобы внести изменения в документацию по WSL, ознакомьтесь с руководством для участников разработки портала «Документация» Майкрософт.
  • Зарегистрировать сведения о проблеме с Терминалом Windows, используя репозиторий продуктов Терминала Windows, если проблема связана с Терминалом Windows, консолью Windows или пользовательским интерфейсом командной строки.

Если вы хотите оставаться в курсе последних новостей WSL, используйте следующее:

  • в наш блог команды разработчиков для командной строки;
  • Twitter. Следите за @craigaloewen в Twitter, чтобы узнать о новостях, обновлениях и т. д.

Обратная связь

Просмотреть все отзывы по странице

Соединение WebSocket с ‘ws://localhost:1234/tiptap’ не удалось: Ошибка при установлении соединения: net::ERR_CONNECTION_REFUSED

marcoippolito

#1

Я пытаюсь понять, как использовать локальный сервер веб-сокетов.

Чтобы использовать локальный сервер веб-сокетов, я изменил WebSocketProvider в https://github.com/yjs/yjs-demos/blob/master/tiptap/src/Realtime.js как:

 //const provider = new WebsocketProvider('wss://demos.yjs.dev', 'tiptap', ydoc)
const provider = новый WebsocketProvider('ws://localhost:1234', 'tiptap', ydoc)
 

Но в консоли браузера я получаю это сообщение об ошибке:

Соединение WebSocket с ‘ws://localhost:1234/tiptap’ не удалось: Ошибка при установлении соединения: net::ERR_CONNECTION_REFUSED

Как решить проблему?
С нетерпением жду вашей помощи.
Марко

канададуан

#2

Вы используете сервер y-websocket локально? например

 ПОРТ = 1234 npx y-websocket-сервер
 

маркоипполито

#3

@canadaduane Это была моя ошибка!!! Я не запускал сервер y-websocket локально…)))

 (база) marco@pc01:~/webMatters/vueMatters/yjs-demos/tiptap$ PORT=1234 npx y-websocket-server
 

работает на порту 1234

У меня все работает!

Спасибо. И простите за эту ошибку

canadaduane

#4

Рад, что все заработало!

1 Нравится

маркоипполито

#5

@canadaduane Привет, Дуэйн!
Сейчас я пытаюсь сделать следующий шаг.
Даже если мое приложение будет развернуто в облаке, в данный момент я разрабатываю его на локальном ПК.
Просто чтобы понять, как заставить его работать правильно, я попытался использовать Realtime.js как есть, с
const provider = new WebsocketProvider(‘ws://localhost:1234’, ‘tiptap’, ydoc)

В nginx конфигурация веб-сервера Я поставил эту часть для веб-сокета:

 map $http_upgrade $connection_upgrade {
  обновление по умолчанию;
  '' закрывать;
}
восходящий веб-сокет {
    сервер ggc.world:1234;
}
сервер {
    слушать 8443 ssl;
    имя_сервера ggc.world;
    ssl_certificate /etc/letsencrypt/live/ggc.world-0002/fullchain.pem; # под управлением Certbot
    ssl_certificate_key /etc/letsencrypt/live/ggc.world-0002/privkey.pem; # под управлением Certbot
    ssl_trusted_certificate /etc/letsencrypt/live/ggc.world-0002/chain.pem;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # под управлением Certbot
    расположение / {
        прокси_пасс http://вебсокет;
        прокси_http_версия 1. 1;
        proxy_set_header Обновить $http_upgrade;
        proxy_set_header Соединение $connection_upgrade;
        proxy_set_header Хост $host;
    }
}
 

Я запускаю y-websocket-server локально:

 (база) marco@pc01:~/webMatters/vueMatters/GGC$ PORT=1234 npx y-websocket-server
работает на порту 1234
 

При запуске приложения я получаю эту ошибку:

Ошибка подключения WebSocket к ‘wss://localhost:1234/tiptap’: Ошибка при установлении соединения: nett::ERR_SSL_PROTOCOL_ERROR

Я пытался изменить конфигурацию nginx:

 восходящий веб-сокет {
    #сервер ggc.world:1234;
    сервер 127.0.0.1:1234;
}
сервер {
    слушать 8443 ssl;
    имя_сервера ggc.world;
 

Но опять же:
«Подключение WebSocket к ‘wss://localhost: 1234/tiptap’failed: Ошибка при установлении соединения: net::ERR_SSL_PROTOCOL_ERROR»

Если nginx прослушивает порт 8443 для ssl, должен ли я поместить его куда-нибудь в Realtime.js ?
Как заставить это работать?

канададуан

#6

Вот моя конфигурация nginx. У меня есть собственный y-websocker-сервер, работающий на порту 1235 (см. код):

 сервер {
слушать 80 ;
# слушать [::]:80 ipv6only=on;
корень /var/www/html;
индекс index.php index.html index.htm;
имя_сервера y.relm.us;
расположение / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Хост $host;
прокси_пароль http://localhost:1235;
прокси_http_версия 1.1;
proxy_set_header Обновить $http_upgrade;
proxy_set_header Соединение "Обновление";
proxy_connect_timeout 7 дней;
proxy_send_timeout 7 дней;
proxy_read_timeout 7 дней;
client_max_body_size 2м;
}
error_page 413 @filetoobig;
страница_ошибки 404 /404.html;
error_page 500 502 503 504 /50x.html;
местоположение = /50x.html {
корень /usr/share/nginx/html;
}
местоположение @filetoobig {
add_header Access-Control-Allow-Origin * всегда;
}
    слушать 443 ssl; # под управлением Certbot
    ssl_certificate /etc/letsencrypt/live/y. relm.us/fullchain.pem; # под управлением Certbot
    ssl_certificate_key /etc/letsencrypt/live/y.relm.us/privkey.pem; # под управлением Certbot
    включить /etc/letsencrypt/options-ssl-nginx.conf; # под управлением Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # под управлением Certbot
}
 

Использование GDB — документация QEMU

QEMU поддерживает работу с gdb через средство удаленного подключения gdb («gdbstub»). Это позволяет отлаживать гостевой код в том же так, как вы могли бы с помощью средства отладки низкого уровня, такого как JTAG на реальном оборудовании. Вы можете остановить и запустить виртуальную машину, проверять состояние, такое как регистры и память, и устанавливать точки останова и точки наблюдения.

Чтобы использовать gdb, запустите QEMU с параметрами -s и -S . Опция -s заставит QEMU прослушивать входящие соединения. из gdb на TCP-порт 1234, а -S заставит QEMU не запускать guest, пока вы не скажете об этом из gdb. (Если вы хотите указать, какой TCP-порт для использования или для использования чего-то другого, кроме TCP, для gdbstub соединения используйте параметр -gdb dev вместо -s . Видеть Например, с использованием сокетов unix.)

 qemu-system-x86_64 -s -S -kernel bzImage -hda rootdisk.img -append "root=/dev/hda" 

QEMU запустится, но будет молча ждать подключения gdb.

Затем запустите gdb в исполняемом файле vmlinux:

 > gdb vmlinux
 

В gdb подключитесь к QEMU:

 (gdb) целевой удаленный локальный хост: 1234
 

После этого вы можете нормально использовать gdb. Например, введите «c», чтобы запустить ядро:

 (gdb) c
 

Вот несколько полезных советов по использованию gdb в системном коде:

  1. Используйте info reg для отображения всех регистров процессора.

  2. Используйте x/10i $eip для отображения кода в позиции ПК.

  3. Используйте набор архитектуры i8086 для создания дампа 16-битного кода. Затем используйте x/10i $cs*16+$eip для сброса кода в позиции ПК.

Отладка многоядерных машин

Абстракция GDB для отладки целей с несколькими возможными параллельные потоки исполнения являются двухуровневыми: они поддерживают несколько «низших», каждый из которых может иметь несколько «потоков». Когда QEMU машина имеет более одного ЦП, QEMU представляет каждый кластер ЦП как отдельный «низший», где каждый ЦП в кластере является отдельным «нить». Большинство типов машин QEMU имеют одинаковые ЦП, поэтому один кластер, в котором есть все процессоры. Несколько типов машин неоднородны и имеют несколько кластеров: например, sifive_u машина имеет кластер с одним ядром E51 и второй кластер с четырьмя ядра U54. Здесь Е51 единственная резьба в первой низшей, а ядра U54 — все потоки во втором подчиненном.

Когда вы подключаете gdb к gdbstub, он автоматически подключиться к первому подчиненному; вы можете отображать процессоры в этом кластер с помощью команды gdb info thread и переключаться между их с помощью обычных команд управления потоками gdb.

Для многокластерных машин, к сожалению, gdb по умолчанию не обрабатывать несколько подчиненных, поэтому вам нужно явно подключить им. Во-первых, вы должны подключиться к расширенный удаленный протокол, не удаленный :

 (gdb) цель расширенный удаленный локальный хост: 1234
 

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

 (gdb) add-inferior
Добавлен низший 2
(gdb) низший 2
[Переключение на нижний 2 [] ()]
(gdb) прикрепить 2
Присоединение к процессу 2
предупреждение: исполняемый файл не указан, и цель не поддерживает
автоматическое определение исполняемого файла. Попробуйте использовать команду «файл».
0x00000000 в ?? ()
 

Как только вы это сделаете, информационных потоков будут показывать процессоры в все кластеры, к которым вы присоединились:

 (gdb) информационные потоки
  Идентификатор целевого идентификатора кадра
  1. 1 Thread 1.1 (процессор cortex-m33-arm-cpu [работает]) 0x00000000 в ?? ()
* 2.1 Thread 2.2 (процессор cortex-m33-arm-cpu [остановлен]) 0x00000000 в ?? ()
 

Вероятно, вы также захотите установить gdb в режим schedule-multiple , так что, когда вы говорите gdb continue , он возобновляет работу всех процессоров, не только в кластере, над которым вы сейчас работаете:

 (gdb) установить несколько расписаний вкл.
 

Использование сокетов unix

Альтернативным методом подключения gdb к QEMU gdbstub является использование сокет unix (если поддерживается вашей операционной системой). Это полезно, когда запуск нескольких тестов параллельно, или если у вас нет известного свободного TCP порт (например, при запуске автоматических тестов).

Сначала создайте chardev с соответствующими параметрами, затем указать gdbserver использовать это устройство:

 qemu-system-x86_64 -chardev socket,path=/tmp/gdb-socket,server=on,wait=off,id=gdb0 -gdb chardev:gdb0 -S . .. 

Запустите gdb, как и раньше, но на этот раз подключитесь, используя путь к сокет:

 (gdb) целевой удаленный /tmp/gdb-socket
 

Обратите внимание, что для использования сокета unix для подключения вам потребуется gdb версии 9.0 или новее.

Дополнительные параметры отладки

Проверка физической памяти

Еще одна функция QEMU gdbstub — переключение памяти GDB. работает, по умолчанию GDB покажет текущую память процесса с учетом трансляция виртуального адреса.

Если вы хотите проверить/изменить физическую память, вы можете установить gdbstub работать с физической памятью, а не с виртуальной.

Режим памяти можно проверить, отправив следующую команду:

пакет обслуживания qqemu.PhyMemMode

Будет возвращено либо 0, либо 1, 1 указывает, что вы в данный момент находитесь в Режим физической памяти.

пакет обслуживания Qqemu.PhyMemMode:1

Это изменит режим памяти на физическую память.