所以我有这个想要用 npx 运行的节点包,命令如下:
npx @pika/init --help
这应该只是下载包、执行它并打印帮助。
然而,它所做的是尝试执行/sbin/init
。
我已经在运行 Arch 的台式机、运行 Ubuntu 18.04 的服务器和运行 CentOS 6.10 的另一台服务器上尝试过此操作 - 都表现出相同的行为。
我也尝试过用引号括住参数或者转义/
,但都没有用。
有人知道这里发生了什么以及我该如何避免这种情况吗?
谢谢!
哦,不管怎样,我在这三个系统上都使用 bash 作为我的 shell。
答案1
这种行为被描述为官方 npm 文档:
“默认情况下,npx 将检查 $PATH 或本地项目二进制文件中是否存在,并执行它。如果未找到,它将在执行前进行安装。”
就您而言,这仅仅意味着本地安装的任何内容都$PATH
优先于任何远程包。
您可以使用选项--ignore-existing
忽略$PATH
或本地项目中的现有二进制文件。这将强制npx
执行临时安装并使用最新版本。
生成的命令如下所示:
npx --ignore-existing @pika/init --help