linux下由于权限问题,经常会出现一些奇怪的情况,这个方法是连蒙带猜想到的,不一定正确。
由于/usr/local/这个地址应当是受保护的,因此如果下载npm大概是用了sudo的,同时下载相应包的时候也是会用到sudo来绕过/usr/local/的权限的。
因此我推测会导致npm下载好的包并不能直接利用类似http-server这些包的指令的,即使标注了-g也是一样。所以如果想要执行,可以参考自己所用的shell的型号找到对应的.**shrc脚本。
比如我用的(通常)都是bash,因此我应该在~/.bashrc里进行环境变量的修改,而如果我使用的是其他的,比如zshrc,找到的就是.zshrc。
除了linux以外,其他系统似乎也是遵循了不同的命名规范,比如同样使用bash的mac,这个文档的命名却是.bash_profile,使用open .bash_profile进行操作。
找到对应文件后输入
export PATH=$PATH:地址
即可。这里的地址一般是对应模块的bin文件目录,比如我的http-server就是:
export PATH=$PATH:/usr/local/nodejs/lib/node_modules/http-server/bin/
这个目录在输入npm install xxx的时候会有显示,如果不放心可以跳转过去看看。
用了这个之后还是会出现问题的话可能是用户的问题,因为不同的用户使用的.bashrc是不一样的,因此注意要在自己使用的用户上进行更改。