Jak rozwiązać problem z ostrzeżeniem o rzucaniu przez instalację npm fsevents w systemie innym niż MAC OS?

120

Następujące ostrzeżenie jest generowane na npm installpolecenie -

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.1.2 (node_modules\rea
ct-scripts\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@
1.1.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"}
)
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\ch
okidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@
1.1.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"}
)

Ostrzeżenie najwyraźniej powoduje, że nasza praca Jenkinsa nie powiodła się, więc próbujemy się go po prostu pozbyć.

Sprawdziłem już to https://stackoverflow.com/a/42938398/351903 Ale w przeciwieństwie do tego, co tam wspomniano, nie mam żadnych / node_modules / fserrors w mojej konfiguracji. Ponadto mój plik package.json nie zawiera błędów fserrors. Poniżej znajduje się mój plik package.json -

{
  "name": "mvc-panel",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "bootstrap": "^3.3.7",
    "jquery": "^3.2.1",
    "material-ui": "^0.18.3",
    "qs": "^6.4.0",
    "react": "^15.5.4",
    "react-alert": "^2.1.2",
    "react-bootstrap-table": "^3.4.1",
    "react-dom": "^15.5.4",
    "react-loader": "^2.4.2",
    "react-router-dom": "^4.1.1",
    "react-tap-event-plugin": "^2.0.1",
    "serve": "^6.0.0"
  },
  "devDependencies": {
    "datatables.net": "^1.10.15",
    "jquery": "^3.2.1",
    "react-scripts": "^1.0.7"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  }
}

Widzę fsevents w pliku package.json z reagujących-skryptów (który jest zdefiniowany w devDependencies w moim pakiecie.json) w node_modules\react-scripts\package.json-

{
  "_args": [
    [
      {
        "raw": "react-scripts@^1.0.7",
        "scope": null,
        "escapedName": "react-scripts",
        "name": "react-scripts",
        "rawSpec": "^1.0.7",
        "spec": ">=1.0.7 <2.0.0",
        "type": "range"
      },
      "D:\\Sandeepan\\Payu MVC\\backend codebase\\MVC2.0\\panel\\mvc-panel"
    ]
  ],
  "_from": "react-scripts@>=1.0.7 <2.0.0",
  "_id": "[email protected]",
  "_inCache": true,
  "_location": "/react-scripts",
  "_nodeVersion": "8.5.0",
  "_npmOperationalInternal": {
    "host": "s3://npm-registry-packages",
    "tmp": "tmp/react-scripts-1.0.14.tgz_1506471610836_0.5613740666303784"
  },
  "_npmUser": {
    "name": "timer",
    "email": "[email protected]"
  },
  "_npmVersion": "5.3.0",
  "_phantomChildren": {
    "asap": "2.0.6",
    "escape-string-regexp": "1.0.5",
    "graceful-fs": "4.1.11",
    "has-ansi": "2.0.0",
    "universalify": "0.1.1"
  },
  "_requested": {
    "raw": "react-scripts@^1.0.7",
    "scope": null,
    "escapedName": "react-scripts",
    "name": "react-scripts",
    "rawSpec": "^1.0.7",
    "spec": ">=1.0.7 <2.0.0",
    "type": "range"
  },
  "_requiredBy": [
    "#DEV:/"
  ],
  "_resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-1.0.14.tgz",
  "_shasum": "70fe76c9beb67b136b953e875bdfe4ad78d410d1",
  "_shrinkwrap": null,
  "_spec": "react-scripts@^1.0.7",
  "_where": "D:\\Sandeepan\\Payu MVC\\backend codebase\\MVC2.0\\panel\\mvc-panel",
  "bin": {
    "react-scripts": "./bin/react-scripts.js"
  },
  "bugs": {
    "url": "https://github.com/facebookincubator/create-react-app/issues"
  },
  "dependencies": {
    "autoprefixer": "7.1.2",
    "babel-core": "6.25.0",
    "babel-eslint": "7.2.3",
    "babel-jest": "20.0.3",
    "babel-loader": "7.1.1",
    "babel-preset-react-app": "^3.0.3",
    "babel-runtime": "6.26.0",
    "case-sensitive-paths-webpack-plugin": "2.1.1",
    "chalk": "1.1.3",
    "css-loader": "0.28.4",
    "dotenv": "4.0.0",
    "eslint": "4.4.1",
    "eslint-config-react-app": "^2.0.1",
    "eslint-loader": "1.9.0",
    "eslint-plugin-flowtype": "2.35.0",
    "eslint-plugin-import": "2.7.0",
    "eslint-plugin-jsx-a11y": "5.1.1",
    "eslint-plugin-react": "7.1.0",
    "extract-text-webpack-plugin": "3.0.0",
    "file-loader": "0.11.2",
    "fs-extra": "3.0.1",
    "fsevents": "1.1.2",
    "html-webpack-plugin": "2.29.0",
    "jest": "20.0.4",
    "object-assign": "4.1.1",
    "postcss-flexbugs-fixes": "3.2.0",
    "postcss-loader": "2.0.6",
    "promise": "8.0.1",
    "react-dev-utils": "^4.1.0",
    "style-loader": "0.18.2",
    "sw-precache-webpack-plugin": "0.11.4",
    "url-loader": "0.5.9",
    "webpack": "3.5.1",
    "webpack-dev-server": "2.8.2",
    "webpack-manifest-plugin": "1.2.1",
    "whatwg-fetch": "2.0.3"
  },
  "description": "Configuration and scripts for Create React App.",
  "devDependencies": {
    "react": "^15.5.4",
    "react-dom": "^15.5.4"
  },
  "directories": {},
  "dist": {
    "integrity": "sha512-+p0q2N2WW7L4WW6uObqN7fYwSQZ9fBI0StpMYl1Ukoz/lCbemf+yW6b8refyhTsGy62GAqxlpyEfVcTE3hJAxg==",
    "shasum": "70fe76c9beb67b136b953e875bdfe4ad78d410d1",
    "tarball": "https://registry.npmjs.org/react-scripts/-/react-scripts-1.0.14.tgz"
  },
  "engines": {
    "node": ">=6"
  },
  "files": [
    "bin",
    "config",
    "scripts",
    "template",
    "utils"
  ],
  "homepage": "https://github.com/facebookincubator/create-react-app#readme",
  "license": "MIT",
  "maintainers": [
    {
      "name": "timer",
      "email": "[email protected]"
    },
    {
      "name": "fb",
      "email": "[email protected]"
    },
    {
      "name": "gaearon",
      "email": "[email protected]"
    }
  ],
  "name": "react-scripts",
  "optionalDependencies": {
    "fsevents": "1.1.2"
  },
  "readme": "ERROR: No README data found!",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/facebookincubator/create-react-app.git"
  },
  "version": "1.0.14"
}

Aktualizacja

Próbowałem uruchomić polecenie instalacji npm i uzyskać status wyjścia wcześniejszego polecenia. Pomimo ostrzeżeń pokazało 0 oznaczające sukces. Więc nie wygląda na to, żeby praca Jenkinsa utknęła z tego powodu. Jednak wciąż staramy się znaleźć sposób na pozbycie się tego ostrzeżenia, ponieważ nie dotyczy ono naszego systemu operacyjnego.

Sandeepan Nath
źródło
Spróbuj tego, zadziałało dla mnie stackoverflow.com/a/58178041/4088675 Dodawanie fsevents jako opcjiaDependecy
Oluwaloni Richard

Odpowiedzi:

75

fseventsjest inaczej traktowany w systemie Mac i innym systemie Linux. System Linux ignoruje, fseventspodczas gdy Mac go instaluje. Jak wynika z powyższego komunikatu o błędzie, fseventsjest to opcjonalne i jest pomijane w procesie instalacji.

Możesz uruchomić npm install --no-optionalpolecenie w systemie linux, aby uniknąć powyższego ostrzeżenia.

Dalsza informacja

https://github.com/npm/npm/issues/14185

https://github.com/npm/npm/issues/5095

ashisrai_
źródło
17
Właśnie próbowałem uruchomić npm install --no-optional, aby uniknąć ostrzeżenia o fsevents. Jednak nie zadziałało :(
Deunz
1
niestety prowadzi to do innych problemów z powodu błędu w npm. Zobacz github.com/npm/npm/issues/19877#issuecomment-368981968
TigerBear
3
Jak mówi TigerBear, „--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
5
Jak od razu usunąć to jako zależność opcjonalną, aby nie wyświetlać ostrzeżenia?
Aaron Franke
Nie działa, jak reklamowano dla mnie. Ubuntu 19.04 stycznia 2020 r.
Michael Durrant
43

Jeśli chcesz ukryć to ostrzeżenie, wystarczy zainstalować fsevents jako opcjonalną zależność. Po prostu wykonaj:

npm i fsevents@latest -f --save-optional

..A ostrzeżenie nie będzie już przeszkadzać.

Juninho Cruz
źródło
11
To nie jest opcja dla użytkowników innych niż Mac.
Matthew
3
nie działa non-mac
naringas
2
OP powiedział: „... próbuję znaleźć sposób na pozbycie się tego ostrzeżenia, ponieważ nie jest ono istotne dla naszego systemu operacyjnego”, więc proponowane przez Ciebie rozwiązanie nie działa.
matthiku
1
Czy dodałeś opcję „-f”?
Juninho Cruz
38
npm i -f

Chciałbym ponownie opublikować kilka komentarzy z tego wątku , w których można poczytać o problemie i problem został rozwiązany .

To jest właśnie problem Angulara. Bieżący pakiet.json wymaga fsevent jako nie opcjonalnych zależności, ale devDependencies. Może to stanowić problem dla użytkowników innych niż OSX.

Czasami

Nawet jeśli usuniesz go z package.json npm i tak nie powiedzie się, ponieważ inny moduł ma go jako peer dep.

Więc

jeśli npm-shrinkwrap.json nadal tam jest, usuń go lub spróbuj npm i -f

sr9yar
źródło
4
Co robi npm i -f?
Super Jade
3
Czy istnieje odpowiednik przędzy npm i -f?
Super Jade
Zgodnie z dokumentem > Argument -f lub --force zmusi npm do pobrania zdalnych zasobów, nawet jeśli lokalna kopia istnieje na dysku.
Pierre de LESPINAY
15

package.jsonliczy się z optionalDependencieskluczem. NPM w zależnościach opcjonalnych .

Możesz dodać fseventsdo tego obiektu, a jeśli znajdziesz pakiety na innej platformie niż MacOS, fseventszostaną one pominięte przez yarn lub npm .

"optionalDependencies": {
  "fsevents": "2.1.2"
},

W dzienniku instalacji znajdziesz komunikat podobny do poniższego:

info [email protected]: The platform "linux" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
info [email protected]: The platform "linux" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.

Mam nadzieję, że to pomoże!

Esteban Borai
źródło
2
Jeśli nie lubisz bawić się JSON, uruchom to polecenie: npm i fsevents @ latest -f --save-optional, które doda ten JSON do pliku za Ciebie.
Erich Wehrmann
To faktycznie usuwa ostrzeżenie w Linuksie
Pierre de LESPINAY
9

Znalazłem ten sam problem i wypróbowałem wszystkie powyższe rozwiązania oraz na githubie. Niektóre działają tylko w lokalnym repozytorium, kiedy wysyłam mój PR w zdalnych repozytoriach z travic-CI lub Pipelines, zwracają mi ten sam błąd. W końcu naprawiłem to za pomocą poniższego polecenia npm.

npm audit fix --force

eli
źródło
Problem w tym, że nie każdy ma, npm-audita kiedy próbuję go zainstalować z npm install npm-auditnim drastycznie się nie udaje ...
Serj Sagan,
To zadziałało dla mnie, pod warunkiem, że miałem również zainstalowane fsevents jako zależność opcjonalną, jak opisano w kilku odpowiedziach tutaj.
Safa Alai
4

Miałem też ten sam problem, chociaż używam MacOS. Problem jest rodzajem błędu. Rozwiązałem ten problem, wielokrotnie uruchamiając polecenia,

sudo npm cache clean --force 
sudo npm uninstall 
sudo npm install

Raz to nie zadziałało ale gdy kilkakrotnie wyczyściłem cache i po odinstalowaniu npm, ponownym zainstalowaniu npm, błąd zgasł. Używam Angular 8 i ten problem jest powszechny

Parthan_akon
źródło
2

Używam Angular CLI: 8.1.2 Node: 12.14.1 OS: win32 x64

O dziwo, to mi pomogło

npm cache clean --force
npm uninstall @angular/cli
npm install @angular/cli@8.1.2
Pallavi
źródło
1
To npm cache clean --force pomogło mi nie w tej samej sprawie, ale w innej sprawie dotyczącej zależności fsevents.
josh
2

Zamiast używać go za --no-optionalkażdym razem, możemy po prostu dodać go do konfiguracji npm lub yarn.

W przypadku Yarn istnieje domyślna konfiguracja bez opcji, więc możemy po prostu ją edytować:

yarn config set ignore-optional true

Dla npm nie ma domyślnego zestawu konfiguracyjnego, więc możemy go stworzyć:

npm config set ignore-optional true
Hamsa Vardhan Darapureddi
źródło
0

Mam ten sam błąd. W moim przypadku używałem zmapowanego dysku do edycji kodu z drugiego komputera, na którym był uruchomiony Linux. Nie jestem pewien, dlaczego gulp-watch polega na kompatybilności systemu operacyjnego przed instalacją (zakładam, że ma to związek ze względami bezpieczeństwa). Zasadniczo błąd polega na sprawdzaniu systemu operacyjnego i systemu operacyjnego wywołującego moduł węzła, w moim przypadku dwa systemy operacyjne nie były takie same, więc wyrzucił błąd. Który z wyglądu twojego błędu jest taki sam jak mój.

Błąd

Unsupported platform for fsevents@1.1.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

Jak to naprawiłem?

Zalogowałem się bezpośrednio do komputera z systemem Linux i pobiegłem

npm install --save-dev <module-name>

Potem wróciłem do mojego środowiska programowania i po tym wszystko było w porządku.

Mam nadzieję, że to pomoże!

ARLCode
źródło
użyj tego npm i fsevents@latest -f --save-optional
RAVI BANGKIT NUR ZIKRILLAH
0

Przejdź do PNPM: https://pnpm.js.org/

Te fseventsostrzeżenia znikają (w systemie Linux).

Nawet najnowsza przędza (2.x) wyświetla ostrzeżenia.

KTCO
źródło
1
Brak ostrzeżenia w tym miejscu prawdopodobnie wynika ze sposobu, w jaki pnpm buforuje zależności. Prawdopodobnie nadal miałeś ostrzeżenie, ale kolejne zastosowania polegałyby po prostu na utworzeniu dowiązań symbolicznych, pomijaniu instalacji, która generuje ostrzeżenie. Gdybyś wyczyścił pamięć podręczną pnpm, prawdopodobnie ponownie pojawiłyby się ostrzeżenia. Tak czy inaczej, jest to opcja „wylecz chorobę poprzez zabicie pacjenta”, a nie rozwiązanie.
erich2k8
@ erich2k8 Nie masz racji. Wyczyściłem pamięć podręczną pnpm i ostrzeżenie nie pojawia się podczas instalacji pnpm.
KTCO,
-1

Tak, działa z poleceniem npm install --no-optional
Korzystanie ze środowiska:

  • iTerm2
  • macos zaloguj się do mojej maszyny wirtualnej ubuntu16 LTS.
Gu Steven
źródło
-1

Otrzymałem ten błąd, system Linux (Ubuntu) i może się to zdarzyć, gdy uruchomisz:

npm install

1) Jeśli projektu nie ma na dysku lokalnym / komputerze, skopiuj go na swój komputer i spróbuj ponownie. Otrzymujesz więc uprawnienia dostępu do folderu (upewnij się, że masz uprawnienia dostępu).

2) Jeśli nadal otrzymujesz ostrzeżenia lub błędy, uruchom:

Poprawka audytu npm

To rozwiąże luki w Twoich zależnościach i może pomóc w naprawieniu luki, udostępniając proste do uruchomienia polecenia npm i zalecenia dotyczące dalszego rozwiązywania problemów.

Mam nadzieję, że to pomoże!

Harish Kulkarni
źródło
-2

Jeśli ktoś otrzyma ten błąd podczas instalacji ionic cordova. po prostu użyj tego kodu npm install --no-optionalw swoim cmd. A następnie uruchom ten kodnpm install -g ionic@latest cordova

Maizied Hasan Shuvo
źródło
-5

Użyj sudo npm install -g appium.

Babue
źródło