npm WARN notsup SKIPPING OPCJONALNA ZALEŻNOŚĆ: Nieobsługiwana platforma dla [email protected]

113

Próbuję uruchomić ten projekt https://github.com/Soundnode/soundnode-app po aktualizacji mojej wersji minimatch do 3.10.9, otrzymuję ten błąd

npm OSTRZEGAJ opcjonalne POMIJANIE OPCJONALNE ZALEŻNOŚĆ: fsevents@^1.0.0 (moduły_węzłów \ webpack \ moduły_węzłów \ watchpack \ moduły_węzłów \ chokidar \ moduły_węzłów \ fsevents): npm WARN notsup SKIPPING OPCJA DEPENDENCY: Nieobsługiwana platforma dla fsePENDENCJE: 14.0 os ":" darwin "," arch ":" any "} (bieżący: {" os ":" win32 "," arch ":" ia32 "})

moja konfiguracja to Node v - 4.4.2 npm v- 3.10.9 im pracujący na 32-bitowym systemie operacyjnym Windows

Aishwary Tiwari
źródło
1
Nie brzmi to dla mnie jak błąd - czy mimo to masz problem z uruchomieniem kodu? npm WARNjest tylko tym - ostrzeżeniem, na które warto zwrócić uwagę, ale tak naprawdę niczego nie zepsuło.
Aurora0001
2
To konkretne ostrzeżenie po prostu mówi ci, że opcjonalna zależność nie została zainstalowana, ponieważ twoja platforma nie spełniała jej wymagań. W tym przypadku szuka darwina i jesteś na win32
Dave V
to gruby projekt, po uruchomieniu tego polecenia "npm install -g grunt-cli", próbuję uruchomić npm install, kiedy otrzymam to ostrzeżenie,
Aishwary Tiwari
1
@AishwaryTiwari, czy faktycznie wystąpił błąd, czy kod nie działa? Jest mało prawdopodobne, aby ostrzeżenia były rzeczywistym problemem, ponieważ (zgodnie z komunikatem o błędzie) pomijano opcjonalną zależność.
Aurora0001
1
Istnieje żądanie ściągnięcia, które rozwiązuje problem: github.com/npm/npm/pull/19198 Możesz zasubskrybować to żądanie ściągnięcia, aby otrzymać aktualizację, gdy zostanie zamknięte.
RiZKiT

Odpowiedzi:

150

To ostrzeżenie, a nie błąd. Występuje, ponieważ fseventsjest to zależność opcjonalna, używana tylko wtedy, gdy projekt jest uruchamiany w środowisku macOS (pakiet zapewnia „Natywny dostęp do zdarzeń FSEvents w systemie Mac OS-X”).

A ponieważ uruchamiasz swój projekt w systemie Windows, fseventsjest pomijany jako nieistotny.

Istnieje żądanie PR, aby naprawić to zachowanie tutaj: https://github.com/npm/cli/pull/169

piotr.d
źródło
35
Czy nie jest sprzeczne ze sobą coś, co jest opcjonalne i zależne?
Martijn Burger
7
To bardziej kwestia teoretyczna. Może conditional dependencybyłoby lepiej? Nazywanie jest trudne. Myślę, że nie było łatwo znaleźć dobrą nazwę dla tego przypadku, zachowując zwięzłość.
piotr.d
10
npm install --no-optional
suiwenfeng
5
Całkowicie się zgadzam, @DemPilafian. Dlatego zredagowałem swoją oryginalną odpowiedź i usunąłem „tylko”. Osobiście traktuję ostrzeżenia jak błędy, ale w tym przypadku IMHO nie powinno to być rejestrowane jako ostrzeżenie, a raczej informacja, ponieważ w środowisku Windows nie można nic zrobić, aby ostrzeżenie zniknęło.
piotr.d
23
Dobra odpowiedź, teraz jak się tego pozbyć?
TetraDev,
32

Wydaje się, że nadal stanowi to problem, powodując przerywanie instalacji pakietów z ostrzeżeniami o niezainstalowaniu pakietów opcjonalnych z powodu „nieobsługiwanej platformy”.

Problem dotyczy "powłoki" lub package-lock.jsonktóra jest utrzymywana po każdym wykonaniu menedżera pakietów. Kolejne próby kończą się niepowodzeniem, ponieważ odwołuje się do tego pliku zamiast package.json.

Dodanie tych opcji do npm installpolecenia powinno umożliwić ponowną instalację pakietów.

   --no-optional argument will prevent optional dependencies from being installed.

   --no-shrinkwrap argument, which will ignore an available package lock or
                   shrinkwrap file and use the package.json instead.

   --no-package-lock argument will prevent npm from creating a package-lock.json file.

Kompletne polecenie wygląda następująco:

    npm install --no-optional --no-shrinkwrap --no-package-lock

nJoy!

nickl-
źródło
1
Czy ustawienie opcji --no-optional-flag dla kodu, który działa tylko po to, aby pozbyć się ostrzeżenia, jest ryzykowne ? Dlaczego nie jest ustawiony domyślnie?
cederlof
5
Nie może to być rozwiązanie, ponieważ używanie package-lock.json jest dobrą rzeczą, a to rozwiązanie sugeruje coś przeciwnego.
ismailarilik
@ismailarilik To rozwiązanie pozwala mi instalować pakiety, aby móc dalej pracować.
nickl-
„--no-optional” to naprawdę zły pomysł. Zwykle można zignorować ostrzeżenie. Możesz również użyć npm install -f: github.com/angular/angular/issues/13935
FoggyDay
13

Korzystanie z parametru --force:

npm i -f
JFS
źródło
2
Raz wymusiłem instalację tym poleceniem, a teraz, kiedy uruchamiam npm install, nie mam żadnych ostrzeżeń, dzięki!
Allenile
1
Wystąpiły błędy podczas uruchamiania tego polecenia, ale po ponownym uruchomieniu npm install ostrzeżenia zniknęły! dziękuję panu
ccoutinho
Więc instalujesz w swoim projekcie te bezużyteczne zależności (na komputerze z systemem Windows), aby usunąć ostrzeżenia? Jeśli tak, mam nadzieję, że potrząsając drzewami pozbędziemy się ich na budowie. Podoba mi się obejście. Usuwa z ekranu rzeczy związane z jabłkami.
Josep Alacid