n <version> 命令未激活指定版本

n <version> command does not activate specified version

目前我在 Jenkins 服务器上安装了两个版本的节点。

$ n list
node/10.9.0
node/12.14.1

我正在尝试为需要它的特定构建切换到版本 10.9.0。

我先尝试使用 n <version> 但最新的 12.14.1 仍然显示为活动:

$ n 10.9.0
installed : v10.9.0 to /opt/jenkins/n/bin/node
   active : v12.14.1 at /bin/node

我也试过 n use <version> 只是跟着一个提示。

$ n use 10.9.0
>

我已经阅读了有关此的各种文章,但无法获得任何有效切换版本的命令。

https://blog.logrocket.com/switching-between-node-versions-during-development/

下面是第n个可执行文件。

which n
/opt/jenkins/n/bin/n

版本似乎安装在以下目录下:

/opt/jenkins/n/n/versions/node/
10.9.0  
12.14.1

以下是/opt/jenkins/n/bin/

的内容
chrome-debug -> ../lib/node_modules/lighthouse/lighthouse-core/scripts/manual-chrome-launcher.js
lighthouse -> ../lib/node_modules/lighthouse/lighthouse-cli/index.js
n
ng
node
nodejs
npm -> ../lib/node_modules/npm/bin/npm-cli.js
npx -> ../lib/node_modules/npm/bin/npx-cli.js
n-uninstall
n-update

如何使用 n 切换节点版本?上面有什么遗漏的吗?提前致谢。

运行which node后路径显示/bin/node

/bin/node/opt/jenkins/n/bin/nodejs.

的符号链接
$ ll /bin/node
lrwxrwxrwx 1 root root 25 Jan 28 08:26 /bin/node -> /opt/jenkins/n/bin/nodejs

安装时,n <version> 仅更新 /opt/jenkins/n/bin/node

$ n 10.9.0
   installed : v10.9.0 to /opt/jenkins/n/bin/node
      active : v12.14.1 at /bin/node

完成后,需要将节点复制到 nodejs。

$ cp /opt/jenkins/n/bin/node /opt/jenkins/n/bin/nodejs
$ node -v
v10.9.0

您将节点副本安装到多个位置,但只有一个位置由 n 管理(使用 N_PREFIX 设置)。您的 PATH 包括稍后由 n 安装的副本,因此当您仅键入 node.

时 运行 不包括

另请参阅 n doctor,其中查找一些配置问题,包括这个问题。

一个可能的解决方案是在你的路径中更早地使用你想要使用的位置,另一个是删除你不想要的节点副本。但是,您也可以直接 运行 节点的 n 托管副本,这可能非常适合 CI 类型的情况,并且不需要任何配置更改。

n run(或n use)运行 您指定为一次性命令的节点版本。例如

$ n run 10.9.0 --version
v10.9.0
$ n run 10.9.0  -e 'console.log("hello")'
hello
$ n run 10.9.0  my-script.js