SharePoint Framework react.js web part dla SharePointa 2016 – Po pierwsze, zmniejsz wersję

SharePoint Framework (SPFx) to model tworzenia stron i ich elementów dla SharePointa 2016 (z zainstalowanym Feature Pack 2) wzwyż. Udostępnienie nowoczesnego zestawu narzędzi opartego na open source to dla Microsoftu duży krok w dobrą stronę, ale jeżeli twoje rozwiązanie ma wspierać SharePointa 2016, czeka cię kilka kompromisów. Mówiąc krótko – zmniejszamy.

Node.js

Jeżeli wygenerujesz nowy projekt przy pomocy Yeoman SharePoint Generator i spróbujesz go uruchomić, prawdopodobnie zobaczysz taki lub podobny błąd.

Powodem jest niezgodność wersji node.js. Obecnie (czerwiec 2020) SPFx wspiera jedynie node.js w wersji 10.X.X dla SharePointa 2019 lub Online i node.js w wersji 8.X.X dla SharePointa 2016.

Jeśli używasz nowszych wersji node do innych projektów i nie chcesz ich ciągle przeinstalowywać, wypróbuj nvm. To proste narzędzie pozwala z poziomu terminala bezboleśnie przełączać się pomiędzy różnymi wersjami node bez konieczności ich ręcznego instalowania.

Biblioteki zewnętrzne

SharePoint 2016 wspiera jedynie SPFx w wersji v1.1, co prowadzi do kilku przy używaniu zewnętrznych bibliotek:

  1. Musisz używać react.js w wersji 15.X. Część z twoich ulubionych reactowych bibliotek (np. Material-UI) potrzebuje wyższej wersji reacta. Zapomnij też o komponentach funkcyjnych czy react hooks.
  2. Musisz używać TypeScript w wersji 2.4. Poza tym, że niektóre sztuczki znane ci z nowszych wersji TS, mogą nie zadziałać, musisz pilnować, żeby dobrać odpowiednią wersję definicji typów (@types) dla biblioteki działającej z TypeScriptem poniżej 3.0. Jedną z bardziej bolesnych konsekwencji TS w wersji 2.4 jest brak możliwości użycia wspaniałej biblioteki PnP/PnPjs.
  3. Musisz używać Web Partów. SPFx w wersji dla SharePointa 2016 nie wspiera innych form.

 

Poniżej możesz zobaczyć wszystkie domyślne wersje paczek dla SPFx v1.1.

Pełna tabela kompatybilności dostępna jest tutaj.

Błąd ERR_SSL_PROTOCOL_ERROR w lokalnym warsztacie

Jeśli pracujesz na Windowsie, jednym z częściej pojawiających się problemów będzie błąd SSL przy próbie uruchomienia projektu w lokalnym warsztacie (gulp serve).

Rozwiązaniem jest zmiana wartości zmiennej środowiskowej NODE_NO_HTTP2 na 1. Możesz zrobić to przez panel sterowania (zrzut ekranu poniżej) lub przez terminal, choć w drugim przypadku niektóre wersje node mogą zignorować komendę set NODE_NO_HTTP2=1. 

Jeśli z jakiegoś powodu nie możesz lub nie chcesz zmieniać wartości wspomnianej zmiennej środowiskowej, możesz uruchomić gulp z flagą, która wymusi przekierowanie na protokół http.

Po co to wszystko?

Mimo że konfiguracja środowiska SPFx pod tworzenie rozwiązań dla SharePointa 2016 może czasami prowadzić do załamań nerwowych, wierzymy, że warto zapoznać się z tym modelem tworzenia rozszerzeń. Już teraz programowanie rozwiązań dla SharePointa Online jest stosunkowo łatwe i przyjemne (wróć do tabeli kompatybilności, jeśli zastanawiasz się dlaczego) i z pewnością stanie się dużo mniej bolesne dla starszych wersji SharePointa, kiedy Microsoft dogoni nowoczesny web development. Póki co pozostaje nam życzyć ci cierpliwości i powodzenia.