记录npm install后遇到的bug

1,111 阅读2分钟

一、npm not found

bug描述

起因不详:

  1. 可能是用了一句n stable,升级了node;
  2. 还有可能是用npm i -g npm 升级了npm;
  3. 还有可能mac悄悄升级了系统。

总之,结果一发不可收拾, 各种:npm not found

项目想要跑起来是不可能了,急skr~~~

尝试

弯路1:

修改.zshrc的PATH,google出来的方案,并没有太明白,也没有解决问题。

弯路2:

因为报错含了个zsh,走了个弯路,删了zsh,更改了shell环境,依旧报错。因为这不是原因。 顺便记下删除zsh方法 uninstall_oh_my_zsh,发现报错中依旧包含zsh,于是删除.zshrc文件,并切换shell环境:

  1. cat /etc/shells/bin/sh
  2. chsh -s /bin/bash 报错中依旧有zsh,只因为没关闭terminal重启。
  3. 重启terminal. 然鹅,这些不是问题所在,所以问题依旧。没有了zsh,依旧

启用nvm

nvm 与 n的区别

多说一句,为何求助nvm:

node 版本管理工具还有一个是 TJ大神的 n 命令,n 命令是作为一个 node 的模块而存在,而 nvm 是一个独立于 node/npm 的外部 shell 脚本,因此 n 命令相比 nvm 更加局限。 解决方案:

  1. 远程安装了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

测试

收获

  1. node作为整个项目的运行环境,也是npm的依赖,两者的版本之间有匹配关系,不可任意修改其一,尤其npm; (???如果确实是这个引起的问题,才能算是收获;所以这句话不一定正确)
  2. nvm作为node管理还是由于n的,以后我就用nvm
  3. macos升级也要小心:because

/usr/local can no longer be chown'd in High Sierra.
Instead use sudo 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:

  1. nvm in github
  2. detail compare
  3. 用chsh选择shell