【问题标题】:'express' command not found on mac在 mac 上找不到“express”命令
【发布时间】:2016-10-04 04:49:09
【问题描述】:

绝对是一个菜鸟问题,所以请不要评判,但这已经困扰我一段时间了。

不再运行$ sudo npm install -g express-generator$ npm install express -g 多少次,一切似乎都已安装,但命令$ express 仍然不存在。

我正在运行鱼壳。另外,我假设这是来自我的 PATH 文件的问题,但如果是 .bash_profile 或 .bashrc,我会迷路。

我的 .bash_profile 中有三行:

  export PATH=/usr/local/bin:$PATH
  export PATH=/Users/username/.node/lib/node_modules/express-generator/bin/express:$PATH
  export PATH=/Users/username/.node/bin/express:$PATH

我的 .bashrc 文件中没有任何关于节点的内容。

express 安装时返回:

  /Users/username/.node/bin/express -> /Users/username/.node/lib/node_modules/express-generator/bin/express
  /Users/username/.node/lib 

但是当我命令which node 时它会返回

/usr/local/bin/

当我尝试运行 $ls -l /usr/local/bin/express 时,它会返回:

ls: /usr/local/bin/express: No such file or directory

无法找到安装后 express 命令不起作用的诊断。

【问题讨论】:

  • 问:nodenpm 都在命令行下工作,对吗?问:您能否使用此命令的输出更新您的帖子:ls -l /usr/local/bin/express?问:有错误信息吗?如果是这样,请将确切的文本复制/粘贴到您的帖子中。
  • 更新了该命令返回的内容
  • OK:1) 问:express-generatorwhich express-generator 会发生什么? 2)请看这个帖子:Express command not found
  • @paulsm4 我尝试了该链接中的所有内容,但尚未找到解决方案。运行$ which express-generator 产生which: no express-generator in (/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/local/go/bin)
  • 请说明您使用的是哪个外壳。 echo $SHELL 输出什么?我很困惑,因为您谈论 .bashrc 和 .bash_profile 如果您使用的是鱼,则它们不相关。

标签: node.js macos express npm fish


【解决方案1】:

如果你正在运行 fish,你的 .bash_profile 会被忽略,当然!

在 fish 中将 /Users/username/.node/bin/ 添加到 $PATH 的首选方法如下:

set -U fish_user_paths $fish_user_paths /Users/username/.node/bin/

这只是你在命令行中运行一次的东西——而不是你放在启动文件中的东西。

如果您更喜欢使用启动文件,您可以改为修改您的~/.config/fish/config.fish,如下所示:

set PATH $PATH /Users/username/.node/bin/

【讨论】:

  • 这两个我都做了,但都行不通。然而,当我echo $PATH,我得到:/usr/local/bin /Users/username/.node/bin//usr/sbin/usr/local/bin/usr/bin /bin/bin/usr/sbin/sbin/opt/X11/bin/usr/local/go/bin987654333/usr/local/go/bin9876543333@98765433另外,如何从我的 $PATH 中删除 /Users/username/.node/bin/
  • 令人惊讶的是,/Users/username/.node/bin/ 会在 $PATH 中,但 express 却找不到。文件/Users/username/.node/bin/express 真的存在吗?可以肯定的是,用户名当然是要替换为您的实际用户名。
  • 如果你通过fish_user_paths添加了那个路径元素,你可以写set -e fish_user_paths[1]来删除它。
【解决方案2】:

从安装后的符号链接,express 二进制文件应该在/Users/username/.node/bin 目录中可用。您不能使用二进制文件的原因是/Users/username/.node/bin 目录不在您的$PATH 中。 $PATH 中的内容是二进制文件本身。

当您将目录添加到您的$PATH 时,您可以从该目录中执行二进制文件。目前,您的 $PATH 指向 /Users/username/.node/bin/express,其中没有任何二进制文件。您应该将其更正为:

export PATH=/Users/username/.node/bin:$PATH

【讨论】:

  • 遵循了这个建议,但它仍然无法正常工作。尝试命令$ echo $PATH ,它返回:/usr/local/bin /Users/username/.node/bin//usr/sbin/usr/local/bin/usr/bin /bin/bin/usr/sbin/sbin/opt/X11/bin/usr/local/go/bin/usr/local/go/bin这太多了吗?你知道如何从我的 $PATH 中删除 /Users/username/.node/bin/ 吗?
猜你喜欢
  • 2018-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-15
  • 2015-12-21
  • 2018-06-05
  • 2019-09-04
相关资源
最近更新 更多