tslint CLI 和 jest CLI 在 iterm zsh macOS 上不起作用
Posted
技术标签:
【中文标题】tslint CLI 和 jest CLI 在 iterm zsh macOS 上不起作用【英文标题】:tslint CLI and jest CLI not working on iterm zsh macOS 【发布时间】:2019-03-12 04:25:11 【问题描述】:即使在全局安装 tslint、typescript 之后,tslint CLI 似乎也无法在 macOS 上的 i-term zsh 上运行。当我尝试使用它时,它会说
zsh: command not found: tslint
但是当添加到节点项目的包json中时
"fix": "tslint --fix --project ."
然后运行
yarn fix
它似乎运行正常。我尝试通过键入来查找 npm 全局前缀
npm config get prefix
它指向一个
usr/local/Cellar/node/10.7.0
所有其他二进制文件(如节点)都可以工作,并且 bin 文件夹中包含 tslint,这意味着它实际上应该可以工作,但似乎没有。即使是 jest CLI 似乎也不起作用,但是当添加到项目的 package.json 时可以正常工作。
我不明白为什么这不起作用。任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:我再次遇到了这个问题,并且因为它困扰着我而一心想要解决它。这个答案可能就像 shell 的 A、B、C,但我相信它会帮助像我这样的初学者。
因此,当我们在终端(基本上是 CLI)上安装任何可执行的库时,shell 需要知道该二进制文件的存储位置。简而言之,我们需要告诉我们的shell,假设您要在终端上运行一个名为sapphire
的CLI,shell 必须知道要运行的sapphire 二进制文件在哪里。 Shell 通过.zshrc
(如果您使用zsh 作为shell)或.bashrc
(如果您使用bash 作为shell)文件中指定的$PATH
环境变量知道这一点。
为了知道$PATH
中包含哪些路径(意味着在命令运行的情况下你的shell 在哪里查看),运行这个
echo $PATH
并检查 npm 全局安装包的位置。这很容易,因为 npm 会提示它安装文件的位置。一个例子是这样的
现在简单检查 $PATH
是否包含此路径(通过此路径,我的意思是安装了 grunt 二进制文件的位置 /usr/local/Cellar/node/10.7.0/bin/grunt
。如果有,grunt
将运行顺利,如果这路径不包含在 .zshrc/.bashrc 文件中的 $PATH 变量中,您将收到类似
zsh: command not found: grunt
解决此问题所需要做的就是将此路径包含在 $PATH 中,然后就可以开始了。
如何更改.zshrc
?
使用 vim 或 subl 打开文件。进行必要的更改。关闭终端并再次打开,或者通过运行$SHELL
重新启动 shell。事情会得到反映。
【讨论】:
以上是关于tslint CLI 和 jest CLI 在 iterm zsh macOS 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章