安装nodemon遇EventEmitter内存泄漏警告及命令未识别问题求助
嘿,我碰到过类似的问题,尤其是在老版本的Node.js和npm环境下,给你梳理下原因和解决办法:
原因分析
- 系统环境变量缺失:全局安装的
nodemon可执行文件存放在npm的全局bin目录里,如果这个目录没被加到Windows的PATH环境变量中,系统根本找不到这个命令。 - 老版本npm的bug:你用的npm 6.10.2和Node.js 12.9.0都是比较旧的版本,存在已知的全局安装时的事件监听泄漏问题(就是你看到的
MaxListenersExceededWarning),这个bug可能导致安装不完整,或者没正确把命令注册到系统路径里。 - 管理员权限的路径差异:用管理员权限安装时,npm可能会把包装到管理员账户的全局路径,而你的普通用户账户的
PATH没包含这个路径,自然识别不了命令。
解决办法
方法一:配置npm全局路径到环境变量
- 打开普通权限的命令提示符,执行命令获取npm全局安装前缀:
你会得到类似npm config get prefixC:\Users\你的用户名\AppData\Roaming\npm的路径(这是默认路径)。 - 打开系统环境变量设置:右键「此电脑」→「属性」→「高级系统设置」→「环境变量」。
- 在「系统变量」里找到
PATH,点击「编辑」→「新建」,把刚才复制的路径粘贴进去,一路点击「确定」保存。 - 关闭所有命令提示符窗口,重新打开一个,输入
nodemon试试能不能用。
方法二:修复npm后重新安装
老版本npm的bug可能是根源,先修复npm再重装:
- 以管理员权限打开命令提示符,更新npm到6.x分支的最新稳定版(因为Node12只支持到npm6):
npm install npm@6 -g - 清理npm缓存,避免残留问题:
npm cache clean --force - 重新全局安装nodemon:
npm install nodemon -g - 安装完成后,打开新的命令提示符测试
nodemon命令。
方法三:本地安装(临时替代方案)
如果全局安装始终搞不定,可以在项目里本地安装:
- 进入你的项目根目录,执行:
npm install nodemon --save-dev - 修改项目的
package.json,在scripts里加一行:"scripts": { "dev": "nodemon 你的入口文件名.js" } - 之后运行
npm run dev就能用nodemon启动项目了。
内容的提问来源于stack exchange,提问作者Sariful
相关产品推荐
相关产品推荐

