详解linux下fsevents模块引起的npm ls报错解决办法
时间:2022-07-27
本文章向大家介绍详解linux下fsevents模块引起的npm ls报错解决办法,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
有个项目在mac下开发,安装包npm i,一切正常;
把这个项目放到linux机器上,安装包npm i,报了一堆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的模块,最后还报了一堆错:
│ ├── 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
仔细观察发现UNMET OPTIONAL DEPENDENCY的模块和npm ERR是同一批模块,也是安装时报warning的那些模块。
再仔细观察发现这些都是fsevents依赖的模块。
fsevents只能在macOS下安装,无法在linux系统安装。linux下会跳过fsevents模块,也不会安装fsevents依赖的模块。
这其实算是npm的一个bug,npm i时报Warn,npm ls又报Err,前后不一致,容易有误解。
目前无论用哪个版本的npm都会有这个问题,npm i –no-optional也不能解决这个问题。
这些报错不影响项目的正常运行,因为linux不需要fsevents。
如果不希望看到npm Err,可以用npm i -f强制安装,安装过程没有warn,安装完后npm ls看下:
└─┬ chokidar@2.1.5
└── fsevents@1.2.7
干净了,没有任何报错。
我的项目是chokidar这个模块依赖了fsevents,chokidar又是browser-sync、webpack等依赖的。
以上就是本文的全部内容,希望对大家的学习有所帮助。
- Linq Like的操作
- iOS网络——AFNetworking AFURLSessionManager源码解析
- 1692: [Usaco2007 Dec]队列变换(BZOJ1640强化版)
- 1620: [Usaco2008 Nov]Time Management 时间管理
- 手把手教你树莓派linux内核如何编译
- js处理异常try{}catch(e){}
- 1634: [Usaco2007 Jan]Protecting the Flowers 护花
- C#用链式方法表达循环嵌套1
- C#用链式方法表达循环嵌套2
- 【开源】1句代码搞定图片批量上传,无需什么代码功底【无语言界限】
- C#异步调用的方法
- 【David Silver 深度强化学习教程代码实战07】 DQN的实现
- AutoMapper随笔记
- 简析.NET Core 以及与 .NET Framework的关系
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- redis实战第十二篇 redis cluster请求重定向
- 行为型设计模式:责任链模式以及mybatis中的责任链
- java中BigDecimal使用和注意事项
- redis实战第十一篇 redis cluster添加密码
- Linux下docker制作springboot应用镜像
- 行为型设计模式:备忘录模式
- 行为型设计模式:访问者模式
- redis实战第十篇 集群收缩
- redis实战第九篇 集群扩容自动迁移槽(redis-cli)
- 自动化运维| Ansible playbook的逻辑控制语句
- Windows通用应用平台UWP持久化
- redis实战第八篇 集群扩容 手动迁移槽
- Xinetd服务的安装与配置详解
- redis实战第七篇 使用redis工具(redis-cli)搭建redis cluster
- 使用ROS2机器人操作系统进行多机器人编程技术实践(Multi-Robot Programming Via ROS2 )