当我 ssh 进入实例时,节点版本与手动执行时不同

ike*_*aga 2 linux ssh node.js google-compute-engine

如果你能帮我解决这个问题那就太好了。

当我node -v在 GCE 实例上手动运行时,它表明节点版本是v12.18.3 但是当我使用 Cloud Shell 中的其他命令运行它时:

gcloud compute ssh [USER]@[GCE instance] --zone [ZONE] --project [PROJECT ID] --command "node -v"
Run Code Online (Sandbox Code Playgroud)

表明节点版本为v14.17.1

为什么会发生这种情况?我怎样才能做到这个v12.18.3版本?我需要它,因为我的 Vue 应用程序无法在 Node.js 14 版本上正常工作。

额外的信息:

nvm ls
       v12.18.0
->     v12.18.3
         system
default -> 12.18.0 (-> v12.18.0)
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v12.18.3) (default)
stable -> 12.18 (-> v12.18.3) (default)
lts/* -> lts/fermium (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.1 (-> N/A)
lts/fermium -> v14.17.1 (-> N/A)
Run Code Online (Sandbox Code Playgroud)
  • 我的 npm 版本是 6.14.6
  • 我的nvm版本是0.38.0

小智 5

主机上可能存在该二进制文件的多个版本,并且根据您执行命令的位置,PATH 可能会设置不同,从而选择不同的二进制文件来运行。

您可以which -a node在主机上运行以查找该二进制文件的所有版本,然后使用完整路径运行它们/usr/local/bin/node -v,即找出在何种条件下加载哪个版本。

之后,我相信您可以删除有问题的变量或更改 PATH 变量以加载正确的变量。