Jako deweloper dodatku do Google Workspace możesz potrzebować debugowania kodu, aby przetestować zmiany lub rozwiązać złożone problemy. Debugowanie dodatków Google Workspace można przeprowadzać na wiele różnych sposobów w zależności od architektury aplikacji, jej funkcji, sposobu wdrożenia i preferencji.
Z tej strony dowiesz się, jak debugować dodatek HTTP do Google Workspace za pomocą ngrok, czyli zintegrowanej platformy do wprowadzania danych, której możesz używać do testowania lokalnych środowisk programistycznych. W tym przewodniku przetestujesz zmiany kodu w lokalnym środowisku i rozwiążesz problemy w środowisku zdalnym.
Debugowanie w lokalnym środowisku programistycznym
W tej sekcji będziesz pracować z dodatkiem Google Workspace, który działa w środowisku lokalnym.
Rysunek 1. Debugowanie w lokalnym środowisku programistycznym.
Wymagania wstępne
Node.js
- najnowsze wersje
node
inpm
zainstalowane w środowisku lokalnym; Najnowsza wersja aplikacji
nodemon
zainstalowana w Twoim środowisku lokalnym służy do automatycznego wczytywania:npm install -g nodemon
projekt Google Cloud, Zapoznaj się z sekcjami Wstępne wymagania i Konfigurowanie środowiska w przewodniku Szybki start.
Kod dodatku Google Workspace do debugowania w środowisku lokalnym. W tym przewodniku, w celach poglądowych, używamy funkcji linku podglądu z przykładu kodu
3p-resources
z repozytorium GitHubgoogleworkspace/add-ons-samples
.IDE skonfigurowane w środowisku lokalnym, które umożliwia debugowanie. W tym przewodniku używamy środowiska
Visual Studio Code
IDE i jego domyślnych funkcji debugowania.konto
ngrok
.Najnowsza wersja
gcloud
zainstalowana i zainicjowana w Twoim środowisku lokalnym.
Python
- najnowsza wersja
python3
zainstalowana w Twoim środowisku lokalnym. - Najnowsza wersja narzędzi
pip
ivirtualenv
zainstalowanych w środowisku lokalnym, które służą odpowiednio do zarządzania pakietami Pythona i środowiskami wirtualnymi. - projekt Google Cloud, Zapoznaj się z sekcjami Wstępne wymagania i Konfigurowanie środowiska w przewodniku Szybki start.
- Kod dodatku Google Workspace do debugowania w środowisku lokalnym. W tym przewodniku, w celach poglądowych, używamy funkcji linku podglądu z przykładu kodu
3p-resources
z repozytorium GitHubgoogleworkspace/add-ons-samples
. - IDE skonfigurowane w środowisku lokalnym, które umożliwia debugowanie. W tym przewodniku używamy środowiska
Visual Studio Code
IDE i domyślnych funkcji debugowania. - Konto
ngrok
. - Najnowsza wersja
gcloud
zainstalowana i zainicjowana w Twoim środowisku lokalnym.
Java
- Najnowsza stabilna wersja
Java SE 11's JDK
zainstalowana w Twoim środowisku lokalnym. - najnowsza wersja
Apache Maven
zainstalowana w Twoim środowisku lokalnym, służy do zarządzania projektami w języku Java; - projekt Google Cloud, Zapoznaj się z sekcjami Wstępne wymagania i Konfigurowanie środowiska w przewodniku Szybki start.
- Kod dodatku Google Workspace do debugowania w środowisku lokalnym. W tym przewodniku, w celach poglądowych, używamy funkcji linku podglądu z przykładu kodu
3p-resources
z repozytorium GitHubgoogleworkspace/add-ons-samples
. - IDE skonfigurowane w środowisku lokalnym, które umożliwia debugowanie. W tym przewodniku używamy środowiska
Visual Studio Code
IDE i domyślnych funkcji debugowania. - Konto
ngrok
. - Najnowsza wersja
gcloud
zainstalowana i zainicjowana w Twoim środowisku lokalnym.
Udostępnianie usługi localhost publicznie
Aby umożliwić dodatkowi Google Workspace dostęp do środowiska lokalnego, musisz je połączyć z internetem. Aplikacja ngrok
służy do przekierowywania żądań HTTP wysyłanych do publicznego adresu URL do środowiska lokalnego.
- W przeglądarce w środowisku lokalnym zaloguj się na konto
ngrok
. - Zainstaluj aplikację i skonfiguruj
authtoken
w środowisku lokalnym. - Utwórz stałą domenę na koncie
ngrok
. W instrukcjach w tym przewodniku jest ona oznaczana jakoNGROK_STATIC_DOMAIN
.
Tworzenie i instalowanie wdrożenia dodatku
Skonfiguruj dodatek Google Workspace tak, aby wysyłał wszystkie żądania HTTP do Twojej domeny statycznej. Plik wdrożenia powinien wyglądać tak:
{ "oauthScopes": [ "https://www.googleapis.com/auth/workspace.linkpreview", "https://www.googleapis.com/auth/workspace.linkcreate" ], "addOns": { "common": { "name": "Manage support cases", "logoUrl": "https://developers.google.com/workspace/add-ons/images/support-icon.png", "layoutProperties": { "primaryColor": "#dd4b39" } }, "docs": { "linkPreviewTriggers": [ { "runFunction": "NGROK_STATIC_DOMAIN", "patterns": [ { "hostPattern": "example.com", "pathPrefix": "support/cases" }, { "hostPattern": "*.example.com", "pathPrefix": "cases" }, { "hostPattern": "cases.example.com" } ], "labelText": "Support case", "localizedLabelText": { "es": "Caso de soporte" }, "logoUrl": "https://developers.google.com/workspace/add-ons/images/support-icon.png" } ], "createActionTriggers": [ { "id": "createCase", "labelText": "Create support case", "localizedLabelText": { "es": "Crear caso de soporte" }, "runFunction": "$URL2", "logoUrl": "https://developers.google.com/workspace/add-ons/images/support-icon.png" } ] } } }
Zastąp
NGROK_STATIC_DOMAIN
domeną statyczną na konciengrok
.Ustaw projekt Google Cloud do użycia:
gcloud config set project PROJECT_ID
Uzyskaj nowe dane logowania użytkownika, które będą używane do domyślnego uwierzytelniania aplikacji:
gcloud auth application-default login
Zastąp
PROJECT_ID
identyfikatorem projektu aplikacji w Google Cloud.Utwórz wdrożenie:
gcloud workspace-add-ons deployments create manageSupportCases \ --deployment-file=DEPLOYMENT_FILE_PATH
Zastąp
DEPLOYMENT_FILE_PATH
ścieżką do pliku wdrożenia.Instalowanie wdrożenia:
gcloud workspace-add-ons deployments install manageSupportCases
Rysunek 2. Dodatek Google Workspace wysyła wszystkie żądania HTTP do domeny statycznej. Usługa publiczna ngrok
działa jako łącznik między dodatkiem Google Workspace a kodem aplikacji, który jest wykonywany lokalnie.
Testowanie dodatku do Google Workspace
Możesz lokalnie wdrażać, testować, debugować i automatycznie ponownie wczytywać dodatek Google Workspace.
Node.js
W środowisku
Visual Studio Code
IDE zainstalowanym w środowisku lokalnym:- W nowym oknie otwórz folder
add-ons-samples/node/3p-resources
. Skonfiguruj aplikację do uruchamiania lokalnego i automatycznego ponownego ładowania, dodając w pliku
package.json
1 zależność i 2 skrypty:{ ... "dependencies": { ... "@google-cloud/functions-framework": "^3.3.0" }, "scripts": { ... "start": "npx functions-framework --target=createLinkPreview --port=9000", "debug-watch": "nodemon --watch ./ --exec npm start" } ... }
Zainstaluj aplikację z katalogu głównego:
npm install
Utwórz i skonfiguruj uruchomienie o nazwie
Debug Watch
, które uruchamia skryptdebug-watch
, tworząc plik.vscode/launch.json
w katalogu głównym:{ "version": "0.2.0", "configurations": [{ "type": "node", "request": "launch", "name": "Debug Watch", "cwd": "${workspaceRoot}", "runtimeExecutable": "npm", "runtimeArgs": ["run-script", "debug-watch"] }] }
Dodaj punkt przerwania, który wstrzymuje przetwarzanie żądania HTTP w pliku
index.js
, i rozpocznij uruchamianie i debugowanie z dodaną wcześniej konfiguracjąDebug Watch
. Aplikacja działa i nasłuchuje żądań HTTP na porcie9000
.Rysunek 3. Aplikacja działa i nasłuchuje żądań HTTP na porcie
9000
.
- W nowym oknie otwórz folder
Uruchom aplikację
ngrok
w środowisku lokalnym:ngrok http --domain=NGROK_STATIC_DOMAIN 9000
Zastąp
NGROK_STATIC_DOMAIN
domeną statyczną na konciengrok
. Wszystkie żądania są teraz przekierowywane do Twojego lokalnego środowiska i portu używanego przez aplikację.Rysunek 4. Terminal z uruchomionym serwerem
ngrok
i przekierowaniem.Aplikacja
ngrok
uruchamia też interfejs internetowy na Twoim komputerze lokalnym. Możesz monitorować wszystkie działania, otwierając go w przeglądarce.Rysunek 5. Interfejs internetowy hostowany przez aplikację
ngrok
nie wyświetla żądań HTTP.Przetestuj dodatek Google Workspace, wyświetlając podgląd adresu URL przypadku w nowym dokumencie Google za pomocą konta testowego:
Utwórz nowy dokument Google.
Wpisz ten link i kliknij
enter
:https://example.com/support/case/?name=Name1&description=Description1&priority=P1
Kliknij link.
W
Visual Studio Code
w środowisku lokalnym możesz zobaczyć, że wykonanie zostało wstrzymane w miejscu ustawionego punktu przerwania.Rysunek 6. Wykonywanie jest wstrzymywane w ustawionym punkcie przerwania.
Gdy wznowisz wykonywanie kodu w debugerze
Visual Studio Code
przed przekroczeniem limitu czasu przez dodatki Google Workspace, dodatek Google Workspace wyświetli podgląd linku w Google Docs z pamięci podręcznej.Możesz sprawdzić dzienniki żądań i odpowiedzi HTTP w interfejsie internetowym aplikacji
ngrok
w swoim środowisku lokalnym.Rysunek 7. Żądanie HTTP z interfejsu internetowego hostowanego przez aplikację
ngrok
.Aby zmienić zachowanie aplikacji, zastąp
Case
wartościąCase:
w bloku kodu51
w plikuindex.js
. Gdy zapiszesz plik,nodemon
automatycznie ponownie wczyta aplikację z zaktualizowanym kodem źródłowym, aVisual Studio Code
pozostanie w trybie debugowania.Rysunek 8. Aplikacja działa i nasłuchuje żądań HTTP na porcie
9000
z załadowanym zmienionym kodem.Tym razem zamiast kliknąć link i poczekać kilka sekund w nowym dokumencie Google, możesz wybrać ostatnie żądanie HTTP zapisane w interfejsie internetowym hostowanym przez aplikację
ngrok
w środowisku lokalnym i kliknąćReplay
. Podobnie jak poprzednio, wtyczka Google Workspace nie odpowiada, ponieważ jest aktywnie debugowana.Gdy wznowisz wykonywanie kodu w debugerze aplikacji
Visual Studio Code
, w interfejsie internetowym hostowanym przez aplikacjęngrok
w Twoim środowisku lokalnym możesz zobaczyć, że aplikacja generuje odpowiedź z aktualizowaną wersją karty podglądu.
Python
W środowisku
Visual Studio Code
IDE zainstalowanym w środowisku lokalnym:- W nowym oknie otwórz folder
add-ons-samples/python/3p-resources/create_link_preview
. Utwórz nowe środowisko wirtualne dla Pythona
env
i aktywuj je:virtualenv env
source env/bin/activate
Zainstaluj wszystkie zależności projektu za pomocą narzędzia
pip
w środowisku wirtualnym:pip install -r requirements.txt
Utwórz plik
.vscode/launch.json
w katalogu głównym i skonfiguruj uruchomienie o nazwieDebug Watch
, które uruchamia aplikację z modułufunctions-framework
na porcie9000
w trybie debugowania w środowisku wirtualnymenv
:{ "version": "0.2.0", "configurations": [{ "type": "python", "request": "launch", "name": "Debug Watch", "python": "${workspaceFolder}/env/bin/python3", "module": "functions_framework", "args": [ "--target", "create_link_preview", "--port", "9000", "--debug" ] }] }
Dodaj punkt przerwania, który wstrzymuje przetwarzanie żądania HTTP w pliku
main.py
, i rozpocznij uruchamianie i debugowanie z dodaną wcześniej konfiguracjąDebug Watch
. Aplikacja działa i nasłuchuje żądań HTTP na porcie9000
.Rysunek 3. Aplikacja działa i nasłuchuje żądań HTTP na porcie
9000
.
- W nowym oknie otwórz folder
Uruchom aplikację
ngrok
w środowisku lokalnym:ngrok http --domain=NGROK_STATIC_DOMAIN 9000
Zastąp
NGROK_STATIC_DOMAIN
domeną statyczną na konciengrok
. Wszystkie żądania są teraz przekierowywane do Twojego lokalnego środowiska i portu używanego przez aplikację.Rysunek 4. Terminal z uruchomionym serwerem
ngrok
i przekierowaniem.Aplikacja
ngrok
uruchamia też interfejs internetowy na Twoim komputerze lokalnym. Możesz monitorować wszystkie działania, otwierając go w przeglądarce.Rysunek 5. Interfejs internetowy hostowany przez aplikację
ngrok
nie wyświetla żądań HTTP.Przetestuj dodatek Google Workspace, wyświetlając podgląd adresu URL przypadku w nowym dokumencie Google za pomocą konta testowego:
Utwórz nowy dokument Google.
Wpisz ten link i kliknij
enter
:https://example.com/support/case/?name=Name1&description=Description1&priority=P1
Kliknij link.
W
Visual Studio Code
w środowisku lokalnym możesz zobaczyć, że wykonanie zostało wstrzymane w miejscu ustawionego punktu przerwania.Rysunek 6. Wykonywanie jest wstrzymywane w ustawionym punkcie przerwania.
Gdy wznowisz wykonywanie kodu w debugerze
Visual Studio Code
przed przekroczeniem limitu czasu przez dodatki Google Workspace, dodatek Google Workspace wyświetli podgląd linku w Google Docs z pamięci podręcznej.Możesz sprawdzić dzienniki żądań i odpowiedzi HTTP w interfejsie internetowym aplikacji
ngrok
w swoim środowisku lokalnym.Rysunek 7. Żądanie HTTP z interfejsu internetowego hostowanego przez aplikację
ngrok
.Aby zmienić zachowanie aplikacji, zastąp
Case
wartościąCase:
w pliku56
w plikumain.py
. Po zapisaniu plikuVisual Studio Code
aplikacja automatycznie ponownie wczyta aplikację z zaktualizowanym kodem źródłowym i pozostanie w trybie debugowania.Rysunek 8. Aplikacja działa i nasłuchuje żądań HTTP na porcie
9000
z załadowanym zmienionym kodem.Tym razem zamiast kliknąć link i poczekać kilka sekund w nowym dokumencie Google, możesz wybrać ostatnie żądanie HTTP zapisane w interfejsie internetowym hostowanym przez aplikację
ngrok
w środowisku lokalnym i kliknąćReplay
. Podobnie jak poprzednio, wtyczka Google Workspace nie odpowiada, ponieważ jest aktywnie debugowana.Gdy wznowisz wykonywanie kodu w debugerze aplikacji
Visual Studio Code
, w interfejsie internetowym hostowanym przez aplikacjęngrok
w Twoim środowisku lokalnym możesz zobaczyć, że aplikacja generuje odpowiedź z aktualizowaną wersją karty podglądu.
Java
W środowisku
Visual Studio Code
IDE zainstalowanym w środowisku lokalnym:- W nowym oknie otwórz folder
add-ons-samples/java/3p-resources
. Skonfiguruj projekt Maven, aby lokalnie uruchamiać aplikację
CreateLinkPreview
na porcie9000
, dodając w plikupom.xml
wtyczkę kompilacji Cloud Functions Frameworkfunction-maven-plugin
:... <plugin> <groupId>com.google.cloud.functions</groupId> <artifactId>function-maven-plugin</artifactId> <version>0.11.0</version> <configuration> <functionTarget>CreateLinkPreview</functionTarget> <port>9000</port> </configuration> </plugin> ...
Teraz możesz uruchomić aplikację lokalnie w trybie debugowania:
mvnDebug function:run Preparing to execute Maven in debug mode Listening for transport dt_socket at address: 8000
Utwórz plik
.vscode/launch.json
w katalogu głównym i skonfiguruj uruchomienie o nazwieRemote Debug Watch
, które łączy się z aplikacją uruchomioną wcześniej za pomocą portu8000
:{ "version": "0.2.0", "configurations": [{ "type": "java", "request": "attach", "name": "Remote Debug Watch", "projectName": "http-function", "hostName": "localhost", "port": 8000 }] }
Dodaj punkt przerwania, który wstrzymuje przetwarzanie żądania HTTP w pliku
CreateLinkPreview.java
, i rozpocznij dołączanie i debugowanie za pomocą wcześniej dodanej konfiguracjiRemote Debug Watch
. Aplikacja jest teraz uruchomiona i nasłuchuje żądań HTTP na porcie9000
.Rysunek 3. Aplikacja działa i nasłuchuje żądań HTTP na porcie
9000
.
- W nowym oknie otwórz folder
Uruchom aplikację
ngrok
w środowisku lokalnym:ngrok http --domain=NGROK_STATIC_DOMAIN 9000
Zastąp
NGROK_STATIC_DOMAIN
domeną statyczną na konciengrok
. Wszystkie żądania są teraz przekierowywane do Twojego lokalnego środowiska i portu używanego przez aplikację.Rysunek 4. Terminal z uruchomionym serwerem
ngrok
i przekierowaniem.Aplikacja
ngrok
uruchamia też interfejs internetowy na Twoim komputerze lokalnym. Możesz monitorować wszystkie działania, otwierając go w przeglądarce.Rysunek 5. Interfejs internetowy hostowany przez aplikację
ngrok
nie wyświetla żądań HTTP.Przetestuj dodatek Google Workspace, wyświetlając podgląd adresu URL przypadku w nowym dokumencie Google za pomocą konta testowego:
Utwórz nowy dokument Google.
Wpisz ten link i kliknij
enter
:https://example.com/support/case/?name=Name1&description=Description1&priority=P1
Kliknij link.
W
Visual Studio Code
w środowisku lokalnym możesz zobaczyć, że wykonanie zostało wstrzymane w miejscu ustawionego punktu przerwania.Rysunek 6. Wykonywanie jest wstrzymywane w ustawionym punkcie przerwania.
Gdy wznowisz wykonywanie kodu w debugerze
Visual Studio Code
przed przekroczeniem limitu czasu przez dodatki Google Workspace, dodatek Google Workspace wyświetli podgląd linku w Google Docs z pamięci podręcznej.Możesz sprawdzić dzienniki żądań i odpowiedzi HTTP w interfejsie internetowym aplikacji
ngrok
w swoim środowisku lokalnym.Rysunek 7. Żądanie HTTP z interfejsu internetowego hostowanego przez aplikację
ngrok
.Aby zmienić zachowanie aplikacji, zastąp
Case
wartościąCase:
w inline78
plikuCreateLinkPreview.java
, ponownie uruchom procesmvnDebug
i ponownie uruchomRemote Debug Watch
, aby ponownie załączyć i rozpocząć debugowanie.Tym razem zamiast kliknąć link i poczekać kilka sekund w nowym dokumencie Google, możesz wybrać ostatnie żądanie HTTP zapisane w interfejsie internetowym hostowanym przez aplikację
ngrok
w środowisku lokalnym i kliknąćReplay
. Podobnie jak poprzednio, wtyczka Google Workspace nie odpowiada, ponieważ jest aktywnie debugowana.Gdy wznowisz wykonywanie kodu w debugerze aplikacji
Visual Studio Code
, w interfejsie internetowym hostowanym przez aplikacjęngrok
w Twoim środowisku lokalnym zobaczysz, że aplikacja generuje odpowiedź z aktualizowaną wersją karty podglądu.
Debugowanie z dalnie obsługiwanego środowiska
W tej sekcji będziesz wchodzić w interakcję z dodatkiem Google Workspace, który działa w środowisku zdalnym.
Rysunek 9. Debugowanie z dalszego środowiska.
Wymagania wstępne
- Dodatek do Google Workspace został wdrożony i zainstalowany.
- Aplikacja działająca w Twoim środowisku zdalnym z włączonym debugerem na danym porcie. W instrukcjach w tym przewodniku jest ona oznaczana jako
REMOTE_DEBUG_PORT
. - Środowisko lokalne może
ssh
do środowiska zdalnego. - IDE skonfigurowane w środowisku lokalnym, które umożliwia debugowanie. W tym przewodniku używamy
Visual Studio Code
IDE i domyślnych funkcji debugowania.
Łączenie środowisk lokalnych i zdalnych
W środowisku lokalnym, z którego chcesz zainicjować połączenie klienta debugowania, skonfiguruj tunel SSH:
ssh -L LOCAL_DEBUG_PORT:localhost:REMOTE_DEBUG_PORT REMOTE_USERNAME@REMOTE_ADDRESS
Zastąp następujące elementy:
LOCAL_DEBUG_PORT
: port debugowania w Twoim środowisku lokalnym.REMOTE_USERNAME
: nazwa użytkownika w środowisku zdalnym.REMOTE_ADDRESS
: adres środowiska zdalnego.REMOTE_DEBUG_PORT
: port debugowania w zdalnym środowisku.
Port debugowania w Twoim środowisku lokalnym jest teraz połączony z portem debugowania w Twoim środowisku zdalnym.
Rozpocznij debugowanie
W zainstalowanym w środowisku lokalnym środowisku IDE Visual Studio Code
wykonaj te czynności:
- W nowym oknie otwórz kod źródłowy aplikacji.
Utwórz plik
.vscode/launch.json
w katalogu głównym i skonfiguruj uruchomienie o nazwieDebug Remote
, które łączy się z portem debugowania w środowisku lokalnym:Node.js
{ "version": "0.2.0", "configurations": [{ "type": "node", "request": "attach", "name": "Debug Remote", "address": "127.0.0.1", "port": LOCAL_DEBUG_PORT }] }
Python
{ "version": "0.2.0", "configurations": [{ "type": "python", "request": "attach", "name": "Debug Remote", "connect": { "host": "127.0.0.1", "port": LOCAL_DEBUG_PORT } }] }
Java
{ "version": "0.2.0", "configurations": [{ "type": "java", "request": "attach", "name": "Debug Remote", "hostName": "127.0.0.1", "port": LOCAL_DEBUG_PORT }] }
Zastąp
LOCAL_DEBUG_PORT
portem debugowania w swoim środowisku lokalnym.Dodaj w źródłowym kodzie aplikacji punkt przerwania, który wstrzymuje przetwarzanie żądania HTTP, i uruchom debugowanie z dodaną wcześniej konfiguracją
Debug Remote
.
interakcji z zainstalowanym dodatkiem do Google Workspace; Dodatek Google Workspace nie odpowiada, ponieważ jest aktywnie debugowany w IDE Visual Studio Code
.
Powiązane artykuły
Dowiedz się, jak tworzyć zapytania do logów błędów.