Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?

Всем привет. Хочу поделиться полученными знаниями. Сразу спасибо Илье Кирову за наводку. Далее - за основу брал этот топик - Adapter debuggen mit VSCode.

Итак - идея - в wsl поставить линукс, в него иоброкер, но среду разработки и отладки использовать родную виндовую - vscode.

Теперь опишу по порядку:

  • Ставим wsl на Windows 10. Важно - ставим wsl 2, ибо рекомендуется vscode, да и некоторые фичи, как я понимаю именно версии 2 - необходимы.

  • В процессе - ставите нужный дистрибутив линукса. Я брал Дебиан, но не важно.

  • Теперь важно - необходимо доработать дистрибутив напильником - а именно нам надо настроить wsl.conf.

    • Оттуда нам важно как минимум:
      options = "metadata,umask=22,fmask=11"
      
      но и остальное не помешает. Напомню, надо делать от рута. По умолчанию
      sudo su -
      
      для вашего пользователя работает.
    • Далее - апдейтим пакеты, и ставим node & iobroker.
    • Что сделал дальше, для удобства - добавляем вашего основного пользователя в группу iobroker:
      sudo usermod -a -G iobroker имя_пользователя
      
    • Сделал автостарт ssh и iobrokera, плюс маппинг портов в ссш, брокер, и на будущее - в отладку.
      • Для этого создал файл start_ssh_mapports.ps1
        wsl.exe -u root /etc/init.d/ssh start       
        wsl.exe -u root /etc/init.d/iobroker.sh start
        $wsl_ip = (wsl hostname -I).trim()        
        Write-Host "WSL Machine IP: ""$wsl_ip"""         
        netsh interface portproxy add v4tov4 listenport=22 connectport=22 connectaddress=$wsl_ip         
        netsh interface portproxy add v4tov4 listenport=8081 connectport=8081 connectaddress=$wsl_ip         
        netsh interface portproxy add v4tov4 listenport=9929 connectport=9929 connectaddress=$wsl_ip       
        
      • И добавил его "Планировщик заданий", условием старта после моего логина.
    • Теперь ssh и iobroker вам доступны по вашим сетевым интерфейсам в винде. Я использую 127.0.0.0:22 http://127.0.0.1:8081/ соответственно.
  • Теперь устанавливаем vscode.

    • Запускаем - и устанавливаем в нем ms-vscode-remote.remote-wsl, можно прямо по ссылке, или локально через View -> Extensions
    • Теперь коннектимся к своему wsl через Подключаем wsl.
    • Там выбираем New Windows using Distro, см. Выбираем дистрибутив, и потом - ваш дистрибутив. В этот момент в вашу домашнем каталоге в линуксе будут сделаны нужные настройки.
  • Вы уже готовы работать со кодом в wsl.

  • Но пока не готовы к отладке. Так как отладка ходит по "дереву" иоброкера, то я сразу решил кодить в самой инсталляции брокера, т.е. в /opt/iobroker/node_modules.

    • Для этого поставил через интерфейс иоброкера нужный адаптер.
    • Потом под своим пользователем удалил его папку (предварительно остановив брокер), и , с гита, стащил код, находясь прямо в node_modules:
      git clone ...
      
    • Дополнительно настроим sudoers, то есть /etc/sudoers/имя_вашего_пользователя
      имя_вашего_пользователя ALL = (root) NOPASSWD: /bin/su - iobroker
      имя_вашего_пользователя ALL = (iobroker) NOPASSWD: ALL
      
    • Теперь в консоли линукса (опять же через vscode - справа, внизу, закладка Terminal
      cd /opt/iobroker/
      node --inspect-brk --inspect=0.0.0.0:9229 node_modules/ваш_модуль/main.js --force --logs
      
    • Можно начинать удаленно отлаживать, но для этого надо сделать еще кое-что - настроить подключение к удаленной отладке в vscode:
      • Идем в Run -> Add Configuration, делаем файл такого вида:
        {        
            // Use IntelliSense to learn about possible attributes.        
            // Hover to view descriptions of existing attributes.        
            // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387        
            "version": "0.2.0",        
            "configurations": [                                        
                {        
                     "type":   "node",        
                     "request":   "attach",        
                     "name":   "Attach to the process",        
                     "address":   "127.0.0.1",        
                     "port":   9229         
                }        
            ]        
        }
        
      • Обратите внимание, если имя стартового .js файла у вас не main.js - то в обоих пунктах используйте правильное - ваше.
    • Теперь мы готовы стартануть отладку: Attach to remote debug
  • Собственно все.

Оригинал лежит здесь.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment