一、npm not found
bug描述
起因不详:
- 可能是用了一句
n stable
,升级了node; - 还有可能是用
npm i -g npm
升级了npm; - 还有可能mac悄悄升级了系统。
总之,结果一发不可收拾, 各种:npm not found
尝试
弯路1:
修改.zshrc的PATH,google出来的方案,并没有太明白,也没有解决问题。
弯路2:
因为报错含了个zsh,走了个弯路,删了zsh,更改了shell环境,依旧报错。因为这不是原因。 顺便记下删除zsh方法 uninstall_oh_my_zsh
,发现报错中依旧包含zsh,于是删除.zshrc
文件,并切换shell环境:
cat /etc/shells/bin/sh
chsh -s /bin/bash
报错中依旧有zsh,只因为没关闭terminal重启。- 重启terminal. 然鹅,这些不是问题所在,所以问题依旧。没有了zsh,依旧
启用nvm
nvm 与 n的区别
多说一句,为何求助nvm:
node 版本管理工具还有一个是 TJ大神的 n 命令,n 命令是作为一个 node 的模块而存在,而 nvm 是一个独立于 node/npm 的外部 shell 脚本,因此 n 命令相比 nvm 更加局限。 解决方案:
- 远程安装了nvm
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
2)安装node原来的旧版本nvm install v8.9
3)which node 安装nvm之前: 4)切到自己的旧版本nvm use v8.9
测试
收获
node
作为整个项目的运行环境,也是npm的依赖,两者的版本之间有匹配关系,不可任意修改其一,尤其npm
; (???如果确实是这个引起的问题,才能算是收获;所以这句话不一定正确)nvm
作为node
管理还是由于n
的,以后我就用nvm
吧- macos升级也要小心:because
/usr/local
can no longer be chown'd in High Sierra.
Instead usesudo chown -R $(whoami) $(brew --prefix)/*
后记
项目运行依旧报了一堆错,Module build failed: Error: Missing binding ...node_modules/node-sass/vendor/darwin-x64-57/binding.node
参考谷歌: 之后跑了下npm rebuild node-sass
.项目可算跑起来了……?
二、npm ERR! Unexpected end of JSON input while parsing near '...ace-event":"^1.0.0","'
bug描述
此时,npm i
一直报错,error logs找不到有效信息。 npm package路径提示错误:
解决
尝试查找npm package路径,但是没有发现根本问题;
solve
参考git 相关bug, 运行npm cache clean --force
. 之后npm i
没有之前的错误。 详细探究npm
缓存究竟是什么问题。
npm cache
参考(npm cache)[docs.npmjs.com/cli/cache]
End~
欢迎提出对类似bug的原因分析与解决方案。 感谢!
Refenrence: