npm and ls report errors caused by fsevents module in linux

  • 2021-01-19 22:35:22
  • OfStack

There is a project under mac development, installation package npm i, 1 cut normal;

Put this project on linux machine, install package npm i, report 1 heap warning:


npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.2.7 (node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.7: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN 0403@1.0.0 No description
npm WARN 0403@1.0.0 No repository field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: abbrev@1.1.1 (node_modules/fsevents/node_modules/abbrev):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/root/2019/0403/node_modules/fsevents/node_modules/abbrev' -> '/root/2019/0403/node_modules/fsevents/node_modules/.abbrev.DELETE'
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: ansi-regex@2.1.1 (node_modules/fsevents/node_modules/ansi-regex):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/root/2019/0403/node_modules/fsevents/node_modules/ansi-regex' -> '/root/2019/0403/node_modules/fsevents/node_modules/.ansi-regex.DELETE'
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: aproba@1.2.0 (node_modules/fsevents/node_modules/aproba):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/root/2019/0403/node_modules/fsevents/node_modules/aproba' -> '/root/2019/0403/node_modules/fsevents/node_modules/.aproba.DELETE'
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: balanced-match@1.0.0 (node_modules/fsevents/node_modules/balanced-match):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/root/2019/0403/node_modules/fsevents/node_modules/balanced-match' -> '/root/2019/0403/node_modules/fsevents/node_modules/.balanced-match.DELETE'
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: chownr@1.1.1 (node_modules/fsevents/node_modules/chownr):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/root/2019/0403/node_modules/fsevents/node_modules/chownr' -> '/root/2019/0403/node_modules/fsevents/node_modules/.chownr.DELETE'
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: code-point-at@1.1.0 (node_modules/fsevents/node_modules/code-point-at):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/root/2019/0403/node_modules/fsevents/node_modules/code-point-at' -> '/root/2019/0403/node_modules/fsevents/node_modules/.code-point-at.DELETE'
...

npm, ls, UNMET, OPTIONAL, DEPENDENCY, npm, ls, UNMET, OPTIONAL, DEPENDENCY


 │    ├ ─ ─  define-property@2.0.2 deduped
 │    ├ ─ ─  extend-shallow@3.0.2 deduped
 │    ├ ─ ─  regex-not@1.0.2 deduped
 │    └ ─ ┬  safe-regex@1.1.0
 │     └ ─ ─  ret@0.1.15
 ├ ─ ┬  UNMET OPTIONAL DEPENDENCY fsevents@1.2.7
 │   ├ ─ ─  nan@2.13.2
 │   └ ─ ┬  UNMET OPTIONAL DEPENDENCY node-pre-gyp@0.10.3
 │    ├ ─ ─  UNMET OPTIONAL DEPENDENCY detect-libc@1.0.3
 │    ├ ─ ┬  UNMET DEPENDENCY mkdirp@0.5.1
 │    │   └ ─ ─  UNMET DEPENDENCY minimist@0.0.8
 │    ├ ─ ┬  UNMET OPTIONAL DEPENDENCY needle@2.2.4
 │    │   ├ ─ ┬  UNMET OPTIONAL DEPENDENCY debug@2.6.9
 │    │   │   └ ─ ─  UNMET OPTIONAL DEPENDENCY ms@2.0.0
 │    │   ├ ─ ┬  UNMET OPTIONAL DEPENDENCY iconv-lite@0.4.24
 │    │   │   └ ─ ─  UNMET OPTIONAL DEPENDENCY safer-buffer@2.1.2
 │    │   └ ─ ─  UNMET OPTIONAL DEPENDENCY sax@1.2.4
 │    ├ ─ ┬  UNMET OPTIONAL DEPENDENCY nopt@4.0.1
 │    │   ├ ─ ─  UNMET OPTIONAL DEPENDENCY abbrev@1.1.1
 │    │   └ ─ ┬  UNMET OPTIONAL DEPENDENCY osenv@0.1.5
 │    │    ├ ─ ─  UNMET OPTIONAL DEPENDENCY os-homedir@1.0.2
 │    │    └ ─ ─  UNMET OPTIONAL DEPENDENCY os-tmpdir@1.0.2
 │    ├ ─ ┬  UNMET OPTIONAL DEPENDENCY npm-packlist@1.2.0
 │    │   ├ ─ ┬  UNMET OPTIONAL DEPENDENCY ignore-walk@3.0.1
 │    │   │   └ ─ ┬  UNMET DEPENDENCY minimatch@3.0.4
 │    │   │    └ ─ ┬  UNMET DEPENDENCY brace-expansion@1.1.11
 │    │   │     ├ ─ ─  UNMET DEPENDENCY balanced-match@1.0.0
 │    │   │     └ ─ ─  UNMET DEPENDENCY concat-map@0.0.1
 │    │   └ ─ ─  UNMET OPTIONAL DEPENDENCY npm-bundled@1.0.5
 │    ├ ─ ┬  UNMET OPTIONAL DEPENDENCY npmlog@4.1.2
 │    │   ├ ─ ┬  UNMET OPTIONAL DEPENDENCY are-we-there-yet@1.1.5
 │    │   │   ├ ─ ─  UNMET OPTIONAL DEPENDENCY delegates@1.0.0
 │    │   │   └ ─ ┬  UNMET OPTIONAL DEPENDENCY readable-stream@2.3.6
 │    │   │    ├ ─ ─  UNMET OPTIONAL DEPENDENCY core-util-is@1.0.2
 │    │   │    ├ ─ ─  UNMET DEPENDENCY inherits@2.0.3
 │    │   │    ├ ─ ─  UNMET OPTIONAL DEPENDENCY isarray@1.0.0
 │    │   │    ├ ─ ─  UNMET OPTIONAL DEPENDENCY process-nextick-args@2.0.0
 │    │   │    ├ ─ ─  UNMET DEPENDENCY safe-buffer@5.1.2
 │    │   │    ├ ─ ┬  UNMET OPTIONAL DEPENDENCY string_decoder@1.1.1
 │    │   │    │   └ ─ ─  UNMET DEPENDENCY safe-buffer@5.1.2
 │    │   │    └ ─ ─  UNMET OPTIONAL DEPENDENCY util-deprecate@1.0.2
 │    │   ├ ─ ─  UNMET DEPENDENCY console-control-strings@1.1.0
 │    │   ├ ─ ┬  UNMET OPTIONAL DEPENDENCY gauge@2.7.4
 │    │   │   ├ ─ ─  UNMET OPTIONAL DEPENDENCY aproba@1.2.0
 │    │   │   ├ ─ ─  UNMET DEPENDENCY console-control-strings@1.1.0
 │    │   │   ├ ─ ─  UNMET OPTIONAL DEPENDENCY has-unicode@2.0.1
 │    │   │   ├ ─ ─  UNMET OPTIONAL DEPENDENCY object-assign@4.1.1
 │    │   │   ├ ─ ─  UNMET OPTIONAL DEPENDENCY signal-exit@3.0.2
 │    │   │   ├ ─ ┬  UNMET DEPENDENCY string-width@1.0.2
 │    │   │   │   ├ ─ ─  UNMET DEPENDENCY code-point-at@1.1.0
 │    │   │   │   ├ ─ ┬  UNMET DEPENDENCY is-fullwidth-code-point@1.0.0
 │    │   │   │   │   └ ─ ─  UNMET DEPENDENCY number-is-nan@1.0.1
 │    │   │   │   └ ─ ─  UNMET DEPENDENCY strip-ansi@3.0.1
 │    │   │   ├ ─ ┬  UNMET DEPENDENCY strip-ansi@3.0.1
 │    │   │   │   └ ─ ─  UNMET DEPENDENCY ansi-regex@2.1.1
 │    │   │   └ ─ ┬  UNMET OPTIONAL DEPENDENCY wide-align@1.1.3
 │    │   │    └ ─ ─  UNMET DEPENDENCY string-width@1.0.2
 │    │   └ ─ ─  UNMET OPTIONAL DEPENDENCY set-blocking@2.0.0
 │    ├ ─ ┬  UNMET OPTIONAL DEPENDENCY rc@1.2.8
 │    │   ├ ─ ─  UNMET OPTIONAL DEPENDENCY deep-extend@0.6.0
 │    │   ├ ─ ─  UNMET OPTIONAL DEPENDENCY ini@1.3.5
 │    │   ├ ─ ─  UNMET OPTIONAL DEPENDENCY minimist@1.2.0
 │    │   └ ─ ─  UNMET OPTIONAL DEPENDENCY strip-json-comments@2.0.1
 │    ├ ─ ┬  UNMET OPTIONAL DEPENDENCY rimraf@2.6.3
 │    │   └ ─ ┬  UNMET OPTIONAL DEPENDENCY glob@7.1.3
 │    │    ├ ─ ─  UNMET OPTIONAL DEPENDENCY fs.realpath@1.0.0
 │    │    ├ ─ ┬  UNMET OPTIONAL DEPENDENCY inflight@1.0.6
 │    │    │   ├ ─ ─  UNMET DEPENDENCY once@1.4.0
 │    │    │   └ ─ ─  UNMET DEPENDENCY wrappy@1.0.2
 │    │    ├ ─ ─  UNMET DEPENDENCY inherits@2.0.3
 │    │    ├ ─ ─  UNMET DEPENDENCY minimatch@3.0.4
 │    │    ├ ─ ┬  UNMET DEPENDENCY once@1.4.0
 │    │    │   └ ─ ─  UNMET DEPENDENCY wrappy@1.0.2
 │    │    └ ─ ─  UNMET OPTIONAL DEPENDENCY path-is-absolute@1.0.1
 │    ├ ─ ─  UNMET OPTIONAL DEPENDENCY semver@5.6.0
 │    └ ─ ┬  UNMET OPTIONAL DEPENDENCY tar@4.4.8
 │     ├ ─ ─  UNMET OPTIONAL DEPENDENCY chownr@1.1.1
 │     ├ ─ ┬  UNMET OPTIONAL DEPENDENCY fs-minipass@1.2.5
 │     │   └ ─ ─  UNMET DEPENDENCY minipass@2.3.5
 │     ├ ─ ┬  UNMET DEPENDENCY minipass@2.3.5
 │     │   ├ ─ ─  UNMET DEPENDENCY safe-buffer@5.1.2
 │     │   └ ─ ─  UNMET DEPENDENCY yallist@3.0.3
 │     ├ ─ ┬  UNMET OPTIONAL DEPENDENCY minizlib@1.2.1
 │     │   └ ─ ─  UNMET DEPENDENCY minipass@2.3.5
 │     ├ ─ ─  UNMET DEPENDENCY mkdirp@0.5.1
 │     ├ ─ ─  UNMET DEPENDENCY safe-buffer@5.1.2
 │     └ ─ ─  UNMET DEPENDENCY yallist@3.0.3
 ├ ─ ┬  glob-parent@3.1.0
 │   ├ ─ ┬  is-glob@3.1.0
 │   │   └ ─ ─  is-extglob@2.1.1 deduped
 │   └ ─ ─  path-dirname@1.0.2
 ├ ─ ─  inherits@2.0.3
 ├ ─ ┬  is-binary-path@1.0.1
 │   └ ─ ─  binary-extensions@1.13.1
 ├ ─ ┬  is-glob@4.0.1
 │   └ ─ ─  is-extglob@2.1.1
 ├ ─ ─  normalize-path@3.0.0
 ├ ─ ─  path-is-absolute@1.0.1
 ├ ─ ┬  readdirp@2.2.1
 │   ├ ─ ─  graceful-fs@4.1.15
 │   ├ ─ ─  micromatch@3.1.10 deduped
 │   └ ─ ┬  readable-stream@2.3.6
 │    ├ ─ ─  core-util-is@1.0.2
 │    ├ ─ ─  inherits@2.0.3 deduped
 │    ├ ─ ─  isarray@1.0.0
 │    ├ ─ ─  process-nextick-args@2.0.0
 │    ├ ─ ─  safe-buffer@5.1.2
 │    ├ ─ ┬  string_decoder@1.1.1
 │    │   └ ─ ─  safe-buffer@5.1.2 deduped
 │    └ ─ ─  util-deprecate@1.0.2
 └ ─ ─  upath@1.1.2

npm ERR! missing: mkdirp@0.5.1, required by node-pre-gyp@0.10.3
npm ERR! missing: minimist@0.0.8, required by mkdirp@0.5.1
npm ERR! missing: minimatch@3.0.4, required by ignore-walk@3.0.1
npm ERR! missing: brace-expansion@1.1.11, required by minimatch@3.0.4
npm ERR! missing: balanced-match@1.0.0, required by brace-expansion@1.1.11
npm ERR! missing: concat-map@0.0.1, required by brace-expansion@1.1.11
npm ERR! missing: console-control-strings@1.1.0, required by npmlog@4.1.2
npm ERR! missing: inherits@2.0.3, required by readable-stream@2.3.6
npm ERR! missing: safe-buffer@5.1.2, required by readable-stream@2.3.6
npm ERR! missing: safe-buffer@5.1.2, required by string_decoder@1.1.1
npm ERR! missing: console-control-strings@1.1.0, required by gauge@2.7.4
npm ERR! missing: string-width@1.0.2, required by gauge@2.7.4
npm ERR! missing: strip-ansi@3.0.1, required by gauge@2.7.4
npm ERR! missing: code-point-at@1.1.0, required by string-width@1.0.2
npm ERR! missing: is-fullwidth-code-point@1.0.0, required by string-width@1.0.2
npm ERR! missing: strip-ansi@3.0.1, required by string-width@1.0.2
npm ERR! missing: number-is-nan@1.0.1, required by is-fullwidth-code-point@1.0.0
npm ERR! missing: ansi-regex@2.1.1, required by strip-ansi@3.0.1
npm ERR! missing: string-width@1.0.2, required by wide-align@1.1.3
npm ERR! missing: inherits@2.0.3, required by glob@7.1.3
npm ERR! missing: minimatch@3.0.4, required by glob@7.1.3
npm ERR! missing: once@1.4.0, required by glob@7.1.3
npm ERR! missing: once@1.4.0, required by inflight@1.0.6
npm ERR! missing: wrappy@1.0.2, required by inflight@1.0.6
npm ERR! missing: wrappy@1.0.2, required by once@1.4.0
npm ERR! missing: minipass@2.3.5, required by tar@4.4.8
npm ERR! missing: mkdirp@0.5.1, required by tar@4.4.8
npm ERR! missing: safe-buffer@5.1.2, required by tar@4.4.8
npm ERR! missing: yallist@3.0.3, required by tar@4.4.8
npm ERR! missing: minipass@2.3.5, required by fs-minipass@1.2.5
npm ERR! missing: safe-buffer@5.1.2, required by minipass@2.3.5
npm ERR! missing: yallist@3.0.3, required by minipass@2.3.5
npm ERR! missing: minipass@2.3.5, required by minizlib@1.2.1

After careful observation, it is found that UNMET, OPTIONAL, DEPENDENCY and npm, ERR are the same batch of modules, which are also the modules that are installed in warning.

A closer look reveals that these are the modules fsevents relies on.

fsevents can only be installed under macOS, not on linux systems. fsevents modules are skipped under linux and modules that are fsevents dependent are not installed.

This is actually a npm 1 bug, npm i times Warn, npm ls Err, again not before and after 1, easy to have a misunderstanding.

No matter which version of npm is used, npm i --no-optional cannot solve this problem.

These errors do not affect the normal operation of the project because linux does not require fsevents.

If you do not want to see npm Err, you can use npm i -f mandatory installation, installation process does not have warn, after the installation of npm ls see:


 └ ─ ┬  chokidar@2.1.5
 └ ─ ─  fsevents@1.2.7 

It's clean. There's no error.

My project is chokidar. This module relies on fsevents, and chokidar relies on browser-sync, webpack, etc.


Related articles: