【解决问题】npm全局安装后仍然提示找不到命令

2019-05-16 admin

惨案

我正常使用命令安装express。

$ npm install -g express-generator

然后bash就提示安装成功

/Users/majialun/.npm-global/bin/express -> /Users/majialun/.npm-global/lib/node_modules/express-generator/bin/express-cli.js
+ express-generator@4.16.1
updated 1 package in 2.123s

然后运行 express,按道理这个时候应该让我创建项目了,但是系统提示:

bash: express: command not found

其实不光是express,我自己写的脚本,也出现这个问题,全局安装成功,但是,通过bash就是调用不出来。

侦查

先看看全局有哪些path变量

$ echo $PATH

然后就出现了很多

/Users/majialun/.rvm/gems/ruby-2.4.1/bin:/Users/majialun/.rvm/gems/ruby-2.4.1@global/bin:/Users/majialun/.rvm/rubies/ruby-2.4.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/majialun/.rvm/gems/ruby-2.4.1/bin:/Users/majialun/.rvm/gems/ruby-2.4.1@global/bin:/Users/majialun/.rvm/rubies/ruby-2.4.1/bin:/Users/majialun/.rvm/bin:/Users/majialun/Documents/flutter/flutter/bin:/Users/majialun/.npm-global/bin/express:/Users/majialun/.rvm/bin:/Users/majialun/Documents/flutter/flutter/bin:/Users/majialun/.rvm/gems/ruby-2.4.1/bin:/Users/majialun/.rvm/gems/ruby-2.4.1@global/bin:/Users/majialun/.rvm/rubies/ruby-2.4.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/majialun/.rvm/gems/ruby-2.4.1/bin:/Users/majialun/.rvm/gems/ruby-2.4.1@global/bin:/Users/majialun/.rvm/rubies/ruby-2.4.1/bin:/Users/majialun/.rvm/bin:/Users/majialun/Documents/flutter/flutter/bin:/Users/majialun/.npm-global/bin/express:/Users/majialun/.rvm/bin:/Users/majialun/.npm-global/bin:/Users/majialun/.rvm/gems/ruby-2.4.1/bin:/Users/majialun/.rvm/gems/ruby-2.4.1@global/bin:/Users/majialun/.rvm/rubies/ruby-2.4.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/majialun/.rvm/gems/ruby-2.4.1/bin:/Users/majialun/.rvm/gems/ruby-2.4.1@global/bin:/Users/majialun/.rvm/rubies/ruby-2.4.1/bin:/Users/majialun/.rvm/bin:/Users/majialun/Documents/flutter/flutter/bin:/Users/majialun/.npm-global/bin/express:/Users/majialun/.rvm/bin:/Users/majialun/Documents/flutter/flutter/bin:/Users/majialun/.rvm/gems/ruby-2.4.1/bin:/Users/majialun/.rvm/gems/ruby-2.4.1@global/bin:/Users/majialun/.rvm/rubies/ruby-2.4.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/majialun/.rvm/gems/ruby-2.4.1/bin:/Users/majialun/.rvm/gems/ruby-2.4.1@global/bin:/Users/majialun/.rvm/rubies/ruby-2.4.1/bin:/Users/majialun/.rvm/bin:/Users/majialun/Documents/flutter/flutter/bin

这个时候我们发现太多了,但是不要慌,刚才安装Express的时候,有一个提示显示了npm的全局脚本挂在哪个path下。

再看看安装成功的提示:

/Users/majialun/.npm-global/bin/express -> /Users/majialun/.npm-global/lib/node_modules/express-generator/bin/express-cli.js
+ express-generator@4.16.1
updated 1 package in 2.123s

我们可以看到,脚本安装在/Users/majialun/.npm-global/bin,这个目录里就是全部的全局脚本,注意是bin目录,express只是这个目录下的一个而已。

然后我们仔细在全局的path里找,发现并不存在这个路径……我也不知道我是怎么把路径搞没的,我在公司的Macbook Pro一切正常,但是随身带的Macbook就缺失路径。

破案

我们直接去根目录(/Users/majialun/)下,显示隐藏文件后,看看有没有.bash_profile,没有就新建一个,有就直接修改,添加进去一个路径:

export PATH=$PATH:/Users/majialun/.npm-global/bin:$PATH

注意这个路径是从上面复制下来的,每个人的不一样,总之从安装成功的提示里,复制到/bin这里结束就可以了。 好了之后,在终端里打source,然后把.bash_profile 拖进来,就有了:

$ source /Users/majialun/.bash_profile 

执行一下然后重启终端,跑起来试试看:

majialun$ express

  warning: the default view engine will not be jade in future releases
  warning: use `--view=jade' or `--help' for additional options

destination is not empty, continue? [y/N] 

没有not found 的报错,问题解决。

[转载]原文链接:https://segmentfault.com/a/1190000019198107

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处。

转载请注明:文章转载自 JavaScript中文网 [https://www.javascriptcn.com]

本文地址:https://www.javascriptcn.com/read-65080.html

文章标题:【解决问题】npm全局安装后仍然提示找不到命令

相关文章
《JavaScript函数式编程》读后感
本文章记录本人在学习 函数式 中理解到的一些东西,加深记忆和并且整理记录下来,方便之后的复习。 在近期看到了《JavaScript函数式编程》这本书预售的时候就定了下来。主要目的是个人目前还是不理解什么是函数式编程。在自己学习的过程中一直听...
2017-03-27
js实现类似MSN提示的页面效果代码分享
这是一篇基于javascript实现了模仿MSN消息提示的效果,推荐给大家,感兴趣的小伙伴们可以参考一下。 为大家分享的模仿MSN消息提示的效果代码如下 <html> <head> <meta http-e...
2017-03-29
javascript消除window.close()的提示窗口
Window.close()这句脚本是用来关闭当前窗口,如果是在window.open的窗口中执行Window.close(),将会很顺利地将窗口关闭,但如果是在一非window.open打开的窗口中执行Window.close(),将会弹...
2017-03-23
axios的全局配置
新建axios-init.js文件 import axios from 'axios'; export default()=>{ let loadingInstance; //创建Loa...
2018-03-22
js实现点击链接后延迟3秒再跳转的方法
本文实例讲述了js实现点击链接后延迟3秒再跳转的方法。分享给大家供大家参考。具体分析如下: js实现点击链接后延迟3秒再跳转。不管有没有用,咱们反正能实现 使用setTimeout()函数实现跳转延迟 <html> <he...
2017-03-24
JavaScript点击按钮后弹出透明浮动层的方法
本文实例讲述了JavaScript点击按钮后弹出透明浮动层的方法。分享给大家供大家参考。具体分析如下: 这里实现点击后页面变灰色,并用JS弹出一个居中的浮动层提示窗口,这个窗口是透明的,可以设置透明度,网上已经有很多类似的JavaScrip...
2017-03-23
JS实现跟随鼠标的链接文字提示框效果
本文实例讲述了JS实现跟随鼠标的链接文字提示框效果。分享给大家供大家参考。具体如下: 这里使用JavaScript与CSS实现链接提示效果,不会改变你原来的链接结构,使用链接原有的title标签来实现,如果之前你使用有title标签,那你几...
2017-03-27
JavaScript实现动画打开半透明提示层的方法
本文实例讲述了JavaScript实现动画打开半透明提示层的方法。分享给大家供大家参考。具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1...
2017-03-22
JS实现仿google、百度搜索框输入信息智能提示的实现方法
本文实例讲述了JS实现仿google、百度搜索框输入信息智能提示的实现方法。分享给大家供大家参考。具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XH...
2017-03-22
JS实现定时自动关闭DIV层提示框的方法
本文实例讲述了JS实现定时自动关闭DIV层提示框的方法。分享给大家供大家参考。具体分析如下: 这里用JS设定时间去控制指定ID的DIV层是否显示,可以实现一个自动关闭的提示框,时间一到,马上关闭,这样会使你的网页更人性一点,代码其实比你想像...
2017-03-23
回到顶部