我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

centos操作系统下,苏南大叔尝试使用electron-packager打包electron程序的时候,发生了一个小插曲。那就是centos无法识别到全局安装的electron-packager命令,这个问题该如何解决呢?

苏南大叔:npm安装的全局包,centos无法识别命令的解决方案 - centos-npm-issue
npm安装的全局包,centos无法识别命令的解决方案(图5-1)

本文测试环境:centos/npm/node/electron-packager

现象描述

苏南大叔的centos系统中,调试electron打包后的效果,打包途径使用的是electron-packager,那么按照既往套路,就应该先利用npm安装一个全局的electron-packager,然后再调用对应命令即可完成。

npm i electron-packager -g

相关链接:

但是,全局安装electron-packager之后,试图执行electron-packager的时候,就发现了一个非常神奇的问题。

electron-packager .

提示如下:

electron-packager command not found

苏南大叔:npm安装的全局包,centos无法识别命令的解决方案 - centos-npm-01
npm安装的全局包,centos无法识别命令的解决方案(图5-2)

问题虽然非常地奇特,但是解决方案也是比较容易,那就是设置环境变量PATH

寻找安装好的npm

使用whereis寻找安装好的npm包,比如electron-packager的位置。

whereis electron-packager

得到的electron-packager路径是:

electron-packager: /opt/node/bin/electron-packager

所以,初步可以判断是系统环境变量PATH,没有识别出路径/opt/node/bin/。在centos系统下,这个路径是npm全局包的位置。

获得当前PATH

可以在终端命令行里面,通过下面的方式获得环境变量PATH

echo $PATH

在苏南大叔centos系统下,返回值为:

/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/parallels/.local/bin:/home/parallels/bin

接下来,苏南大叔需要做的就是,将/opt/node/bin/叠加到上述PATH系统变量之中。每个人的系统变量值都是不一样的,请确认属于您自己的PATH系统变量,请不要复制粘贴!!

临时解决方案

大家都知道,在centos环境下的终端中,可以使用export命令临时设置PATH

export PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/parallels/.local/bin:/home/parallels/bin:/opt/node/bin/

苏南大叔:npm安装的全局包,centos无法识别命令的解决方案 - centos-npm-02
npm安装的全局包,centos无法识别命令的解决方案(图5-3)

这个方案仅仅是个临时方案,只针对当前会话有效,执行之后,就可以在终端中识别出electron-packager这个全局命令了。

永久解决方案(当前用户)推荐

这个方案也比较简单,就是修改centos的当前用户配置文件~/.bash_profile

vi ~/.bash_profile

在最后一行后面,增加识别新的路径/opt/node/bin/即可,注意分隔符是:

PATH=$PATH:$HOME/bin:/opt/node/bin/
export PATH

苏南大叔:npm安装的全局包,centos无法识别命令的解决方案 - centos-npm-03
npm安装的全局包,centos无法识别命令的解决方案(图5-4)

source一下对应文件后,立即生效。

source ~/.bash_profile

永久解决方案(所有用户)

和上一条的思路基本一致,不同的是:编辑的文件变成了/etc/profile。这个配置文件是所有用户都生效的,但是,原版的末尾是没有类似的PATH语句的,需要全部自行添加。

PATH=$PATH:/opt/node/bin/
export PATH

苏南大叔:npm安装的全局包,centos无法识别命令的解决方案 - centos-npm-04
npm安装的全局包,centos无法识别命令的解决方案(图5-5)

当然,为了不重启系统就生效的话,建议您source一下。

source /etc/profile

总结

无论使用哪种方式,正确设置了PATH之后,就可以正确识别出npm全局包命令了。更多的npm相关文章,请点击:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   centos    npm