使用SSH触发Npx命令时出现“command not found”的错误提示。

3

我在Stack Overflow上找到了很多类似的问题,但它们与我的问题无关。

我已经使用NVM安装了Node。

$ node -v
v14.16.0

$ npm -v
7.7.6

$ npx -v
7.7.6

我正在撰写一个部署脚本,将从我们的代码库中运行git pull,然后(除其他事项外)编译资源文件。如果有帮助的话,工作环境是Laravel 8,但我不认为这与我的问题有关。
在远程服务器上以用户身份登录时运行npm install && npm run prod可以完美地运行。然而,通过SSH运行相同的命令会返回以下内容:
jaeger@local-computer~$ ssh deploy@distant-server-with-nvm-node-npm-npx '/bin/sh -c "node -v && npm -v && npx -v && exit"'


Connecting...
v14.16.0
7.7.6
/bin/sh: 1: npx: not found


所以...我迷失了。我看到有关node和/或npm被识别的问题,但没有关于npx的问题,而我需要它与Laravel mix一起使用。当然,从远程服务运行上述评论将完美地运行。
我尝试过:
- 在/etc/ssh/sshd_config中添加PermitUserEnvironment yes,然后重新启动ssh。 - 通过npm i -g npx全局安装npx,但被nvm拒绝,提示npx已存在。 - 重新安装nvm和node。 - 在/home/myuser/.nvm/versions/v14.16.0/bin/npx/usr/local/bin之间创建符号链接。
还有什么我可以尝试?提前感谢您。
1个回答

4
很可能,nvm 已经安装在您的 .bashrc 中,但是您触发了一个不同的 shell (sh)。即使 /bin/sh 指向 bash,这也会禁用使用 rcfile - 详见下文解释。请直接使用 bash
请注意 bash manpage 中的这段摘录: --norc 不读取并执行系统范围的初始化文件 /etc/bash.bashrc 和个人初始化文件 ~/.bashrc,如果 shell 是交互式的话。如果作为 sh 调用 shell,则此选项默认开启。
这意味着您需要强制运行 bash 作为一个 交互式 shell,同时使用标志 -i 指定命令。

圣!太感谢了!我不知道我需要这样做,尽管我知道可以使其互动! - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接