5

目前我在 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 切换节点版本?上面有什么遗漏的吗?提前致谢。

4

2 回答 2

4

运行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

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

$ cp /opt/jenkins/n/bin/node /opt/jenkins/n/bin/nodejs
$ node -v
v10.9.0
于 2020-04-09T12:44:55.760 回答
2

您将节点的副本安装到多个位置,但只有一个位置由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
于 2020-04-09T21:55:33.913 回答