Ubuntu 16.04下已全局安装polymer-cli,执行polymer server提示‘polymer: command not found’
polymer: command not found问题 我之前在Ubuntu环境里也碰到过一模一样的情况——明明全局装了polymer-cli,但就是找不到命令,大概率是npm全局包的路径没加到系统PATH里或者权限问题,给你几个一步步排查解决的方法:
1. 先确认polymer-cli的安装状态与全局路径
首先先验证polymer-cli是不是真的成功全局安装了:
npm list -g --depth=0
如果输出里能看到polymer-cli,那说明安装没问题,接下来看npm的全局包存放路径:
npm get prefix
这个命令会返回全局包的根目录,比如可能是/usr/local(系统级)或者/home/你的用户名/.npm-global(用户级),对应的可执行文件都在这个目录下的bin文件夹里。
2. 将npm全局bin目录添加到系统PATH
如果你的npm get prefix返回的是/home/你的用户名/.npm-global,那它的bin目录就是/home/你的用户名/.npm-global/bin,这个路径大概率没在系统PATH里,所以终端找不到polymer命令。
临时生效(重启终端后失效)
直接在当前终端执行:
export PATH="$PATH:/home/你的用户名/.npm-global/bin"
然后马上试试polymer --version,如果能显示版本号,说明路径问题解决了。
永久生效(重启终端也有效)
编辑你的bash配置文件(比如~/.bashrc或者~/.profile):
nano ~/.bashrc
在文件末尾添加一行:
export PATH="$PATH:/home/你的用户名/.npm-global/bin"
保存退出后,执行以下命令让配置生效:
source ~/.bashrc
现在重启终端再试polymer server应该就能正常运行了。
3. 权限问题排查(如果用sudo安装过)
如果你之前用sudo npm install -g polymer-cli安装,可能会导致全局包的所有者是root,普通用户无法正常访问执行。这种情况可以:
- 先卸载已安装的polymer-cli:
sudo npm uninstall -g polymer-cli - 配置npm使用用户级的全局目录(避免以后再用sudo):
mkdir ~/.npm-global npm config set prefix '~/.npm-global' - 按步骤2把用户级bin目录加到PATH
- 重新安装polymer-cli:
npm install -g polymer-cli
4. 清除终端命令缓存
有时候终端会缓存命令路径,即使PATH已经更新也找不到,执行以下命令清除缓存:
hash -r
然后再试试polymer server。
内容的提问来源于stack exchange,提问作者Abhishek Borikar

