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 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在 CLI 中运行时,Jest 测试不起作用

如何使用 Angular Cli 运行 tslint?

排毒失败并显示“找不到模块 'jest-cli/build/cli/args'”

使用 Jest 进行 Vue 单元测试

projects.map 不是 jest-cli 的功能

vue-cli 项目集成 Jest 单元测试