Python czy JavaScript w węźle Code n8n: kiedy sięgam po który
n8n domyślnie kusi JavaScriptem i w dziewięciu na dziesięć przypadków słusznie. Ale czasem przełączam węzeł Code na Pythona i oszczędzam sobie godziny walki ze składnią. Pokazuję, kiedy to nie fanaberia, tylko zdrowy rozsądek.
Domyślnie JavaScript i to nie przypadek
W węźle Code n8n domyślnie wybieram JavaScript. Nie z sentymentu, tylko dlatego, że jest natywny dla całego narzędzia. Masz pełny dostęp do helperów n8n, do danych z poprzednich węzłów przez $json i $node, świetnie ogarnia JSON, a w większości automatyzacji przerzucasz właśnie JSON z miejsca w miejsce.
Tak naprawdę w dziewięciu na dziesięć węzłów Code, które piszę, JavaScript jest oczywistym wyborem. Filtrowanie tablicy, mapowanie pól, sklejenie odpowiedzi z dwóch węzłów, drobna logika warunkowa. Do tego nie potrzebujesz Pythona i sięganie po niego byłoby sztuką dla sztuki.
Kiedy przełączam na Pythona
Po Pythona sięgam wtedy, gdy zadanie mocno opiera się o jego bibliotekę standardową. Najczęściej w tych sytuacjach:
- Złożony regex. Moduł
rejest czytelniejszy dla skomplikowanych wzorców niż żonglerka wyrażeniami w JS. - Hashe i podpisy.
hashlibihmacrobią robotę bez kombinowania, gdy waliduję sygnaturę webhooka albo liczę sumę kontrolną. - Statystyka i liczby.
statistics,decimali precyzyjna matematyka są pod ręką, gdy nie chcę dramatu z zaokrągleniami. - Przetwarzanie tekstu i dat. Parsowanie nietypowych formatów, czyszczenie stringów, operacje na
datetime. - Walidacja danych. Gdy wejście bywa brudne, łatwiej napisać czytelną walidację, która nie zamienia się w drabinę ifów.
To nie jest tak, że Python jest lepszy. On jest wygodniejszy do tej konkretnej klasy zadań. A wygoda przy debugowaniu o dwudziestej drugiej to realna wartość, nie kosmetyka.
Nie wybieram języka, który lubię. Wybieram ten, w którym to konkretne zadanie napiszę raz i nie wrócę do niego z błędem.
Pułapki Pythona w węźle Code
Zanim przełączysz tryb na Pythona, dwie rzeczy, na które wpadłem i Ty też wpadniesz, jeśli nikt Cię nie ostrzeże.
Inna składnia dostępu do danych. W Pythonie nie ma dolara. Dane czytasz przez _input, _json i _node, czyli z podkreślnikiem zamiast znaku dolara. Pierwsze pół godziny z Pythonem w n8n to zwykle wojna z tym jednym znakiem.
Sandbox i brak swobodnego pip. W środowisku uruchomieniowym n8n masz przede wszystkim bibliotekę standardową. Nie zakładaj, że dorzucisz dowolną paczkę z pip jak w lokalnym projekcie. Jeśli zadanie wymaga ciężkich zewnętrznych bibliotek, to sygnał, że robota powinna trafić do osobnego mikroserwisu, a nie do węzła Code.
Prosta zasada na koniec
JavaScript jako domyślny, Python jako narzędzie pod konkretne zadanie z biblioteki standardowej. Jeśli łapiesz się na tym, że w JS przepisujesz po raz trzeci coś, co re albo hashlib robi w jednej linii, przełącz tryb. A jeśli kusi Cię, żeby w węźle Code zbudować pół aplikacji, to nie jest moment na Pythona, tylko na osobny serwis.
Najczęstsze pytania
Czy w węźle Code n8n lepszy jest Python czy JavaScript?
W większości przypadków JavaScript, bo jest natywny dla n8n, ma pełny dostęp do helperów i działa szybciej. Python wybieram, gdy zadanie mocno korzysta z biblioteki standardowej: regex, hashlib, statistics, datetime, przetwarzanie tekstu. To wybór pod konkretne zadanie, nie religia.
Jakie są ograniczenia Pythona w węźle Code n8n?
Najważniejsze: w trybie sandbox masz głównie bibliotekę standardową, bez swobodnego instalowania paczek przez pip. Składnia dostępu do danych jest inna niż w JS (podkreślnik zamiast dolara, czyli _input i _json), a niektóre operacje jak wywołania HTTP wygodniej zrobić osobnym węzłem HTTP Request niż w kodzie.
Masz workflow, który walczy ze składnią?
U Ciebie zaczynam od warsztatu procesu (90 minut, bezpłatny). Przejdziemy przez Twój przepływ i powiem wprost, gdzie kod pomaga, a gdzie tylko komplikuje. Bez wciskania jednego słusznego stacku.
Zamów warsztat → Lub napisz bezpośrednio.