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

lki*_*sac 17 node.js n

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

$ n list
node/10.9.0
node/12.14.1
Run Code Online (Sandbox Code Playgroud)

我正在尝试切换到版本 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
Run Code Online (Sandbox Code Playgroud)

我也尝试过n use <version>,只是按照提示进行操作。

$ n use 10.9.0
>
Run Code Online (Sandbox Code Playgroud)

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

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

下面是n个可执行文件。

which n
/opt/jenkins/n/bin/n
Run Code Online (Sandbox Code Playgroud)

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

/opt/jenkins/n/n/versions/node/
10.9.0  
12.14.1
Run Code Online (Sandbox Code Playgroud)

以下是内容/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
Run Code Online (Sandbox Code Playgroud)

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

8bi*_*oey 29

如果您使用brew并看到类似的内容:

$ n                                                                                                                                          
     copying : node/16.19.1
   installed : v16.19.1 to /usr/local/bin/node
      active : v19.7.0 at /opt/homebrew/bin/node
Run Code Online (Sandbox Code Playgroud)

只需运行brew unlink node即可n再次管理节点版本。


lki*_*sac 11

运行后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
Run Code Online (Sandbox Code Playgroud)

安装时,仅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
Run Code Online (Sandbox Code Playgroud)

完成此操作后,需要将 Node 复制到 Nodejs。

$ cp /opt/jenkins/n/bin/node /opt/jenkins/n/bin/nodejs
$ node -v
v10.9.0
Run Code Online (Sandbox Code Playgroud)


sha*_*awn 5

您已将节点副本安装到多个位置,但仅管理其中一个位置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
Run Code Online (Sandbox Code Playgroud)