在执行npm install -g命令后,无法使用已安装软件包中的CLI命令

时间:2019-07-19 02:30:12

标签: unix npm

我的npm install -g无法正常工作。它会安装我需要的软件包,但是总是不存在来自软件包的CLI命令。

一个例子是,我遵循TypeORM的快速入门。

首先,全局安装TypeORM:

npm install typeorm -g

然后转到要创建新项目的目录并运行命令:

typeorm init --name MyProject --database mysql

但是当我尝试typeorm init --name MyProject --database mysql时。我收到错误-bash: typeorm: command not found,我认为这与我的环境路径设置有关。

这是我的echo $PATH

的输出

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/aria2/bin:/Applications/Wireshark.app/Contents/MacOS:/Applications/Postgres.app/Contents/Versions/latest/bin

有人可以帮我吗?

4 个答案:

答案 0 :(得分:1)

在Linux / Unix中,如果您是普通用户(即不是root用户),则无法安装全局软件包,因为这些软件包已写入系统文件夹。在您的情况下,-g无济于事,因为它无法访问系统文件夹,因此它与任何其他常规软件包一样在本地安装。为了解决您的问题,您必须获得更多特权。为此,您可以在根级别运行命令,即:

  

sudo npm install typeorm -g

,然后您可以从任何地方访问它,因为-g旨在将其设置为全局;无需使用环境路径设置,因为-g还要注意这一点。

如果您需要将bash会话作为全根用户(以root终端或Windows身份以管理员身份运行的cmd / powershell),而无需出于安全目的而真正登录root帐户,请使用:

  

sudo -i

,然后以root用户身份执行任何操作,而无需每次:s;都写sudo;如我所说,此命令以root用户身份打开当前终端会话,因此您必须在每个新打开的终端中写入它。 希望它能对您有帮助:D(实际上是有用的;))

答案 1 :(得分:1)

我认为我有点晚了,但它可能会帮助某人:D

sudo npm install typeorm -g --unsafe-perm

答案 2 :(得分:0)

要全局安装软件包二进制文件,npm需要创建指向/usr/local/bin的链接,如果您不授予许可,则可能不会发生。尝试使用sudo运行。

$ sudo npm install typeorm -g

您可以运行

$ which typeorm

检查其是否正确安装。

答案 3 :(得分:0)

您可以使用node version manager(nvm)。但是首先要卸载您的node.js。 安装nvm:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash

然后

command -v nvm

然后退出并打开您的终端。 然后,您可以安装任何版本的node.js。 要安装最新版本,请输入:

nvm install node

安装完成后,安装软件包:

npm install typeorm -g

然后它应该可以正常工作。