Korzystam z react-scripts.
Mam ustawione w vscode, w jsconfig.json proste:
{
“compilerOptions”: {
“checkJs”: true,
“jsx”: “react”
}
}
Problem jest z modulami z node_modules.
vscode pokazuje mi, że moduł redux istnieje, jest dostępny(nie podkreśla adresu modułu jako błędny), chociaż nie jest zainstalowany do tej paczki.
Problem wynika z tego, że ten moduł jest w zależnościach modułów (jest w package-lock.json) a folder node_modules jest płaski i wygląda na to, że vscode bierze wszystkie moduły w tego folderu jak leci, nie sprawdza czy te moduły są faktycznie dodane do paczki projektu czy w zależnościach modułów.
Jak to ustawić, żeby pomijało zależności modułów?
To który moduł jest zależnością a który nie widać chyba tylko package.json, więc vscode musiałby dostać się do tego pliku i utworzyć z niego listę wyjątków, które moduły z node_modules może brać pod uwagę… No chyba że istnieje gotowe rozwiązanie?
O dziwo kompletnie nic to nie zmieniło.
Spodziewałem się, że wytnie wszystkie moduły, a nie wycięło ani tych z package.json ani tych z package-lock.json.
Co więcej, to czego nie pisałem: podpowiedzi były i są nadal podwójne do każdego modułu. Kompletnie nie wiem dlaczego.
VSC przypadkiem nie integruje się z gitem? W tedy można wykluczyć katalog w gitignore. Nie jestem pewny czy nie powinieneś dodać **/node_modules ale to już zależnie od struktury katalogów w projekcie.
Sprawdziłem bez rozszerzeń i też nic się nie zmienia. Jedynie zlokalizowałem rozszerzenie dublujące intellisence dla nazw modułów, teraz już wyświetlają się tylko pojedyncze podpowiedzi.
A muszę powiedzieć jeszcze, że nie ma i wcześniej też nie było podpowiedzi dla modułów z package-lock. Jedynie gdy już są wpisane w kod, to ich nie podkreśla jako błąd. Ale jak wpiszę moduł którego nie ma ani w package.json ani w package-lock.json to podkreśla jako błąd.
Wiec intellisence sobie radzi a podkreślanie błędów sobie nie radzi.
To chyba kwestia build-in rozszerzenia vscode.typescript bo ono za to odpowiada (w zasadzie za intellisence też). A czy pośrednio jakiejś innej części vscode to nie wiem.
I na jakiej zasadzie też nie wiem.
EDIT: gdy zmienię rozszerzenie pliku na *.ts to ten błąd nie występuje. Nie ma podpowiedzi i nie uznaje modułów z package-lock.json za istniejące.
Także coś z checkJs jest nie tak, jakoś na tym etapie włącza się coś nadmiarowo albo coś nie włącza.
Mi osobiście VSC nie do końca pod pasował, jest spoko, na pewno na plus jakość dostępnych pluginów, ale czuć w nim niestety electron i ms. Dlatego wróciłem do ST3. Jednak gdybym klepał tylko i wyłącznie strony internetowe jedna za drugą to raczej spróbowałbym coś ze stajni JetBrains czyli PHPStorm i WebStorm.