Currently I have two versions of node installed on a Jenkins server.
$ n list
node/10.9.0
node/12.14.1
I'm trying to switch to version 10.9.0 for a specific build which requires it.
I've tried first by using n <version>
but the latest 12.14.1 still shows as active:
$ n 10.9.0
installed : v10.9.0 to /opt/jenkins/n/bin/node
active : v12.14.1 at /bin/node
I've also tried n use <version>
which just follows up with a prompt.
$ n use 10.9.0
>
I've read various articles on this but could not get any commands to effectively switch versions.
i.e. https://blog.logrocket.com/switching-between-node-versions-during-development/
Below is the n exectuable.
which n
/opt/jenkins/n/bin/n
Versions appear to get installed under the below directory:
/opt/jenkins/n/n/versions/node/
10.9.0
12.14.1
Below are the contents of /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
How can I switch node versions with n? Is there anything in the above that is missing? Thanks in advance.
After running which node
the path shows /bin/node
.
/bin/node
is a symlink to /opt/jenkins/n/bin/nodejs
.
$ ll /bin/node
lrwxrwxrwx 1 root root 25 Jan 28 08:26 /bin/node -> /opt/jenkins/n/bin/nodejs
When installing, with n <version>
it updates /opt/jenkins/n/bin/node
only.
$ n 10.9.0
installed : v10.9.0 to /opt/jenkins/n/bin/node
active : v12.14.1 at /bin/node
Once this is done, node needs to be copied to nodejs.
$ cp /opt/jenkins/n/bin/node /opt/jenkins/n/bin/nodejs
$ node -v
v10.9.0
You have copies of node installed to multiple locations, but only one of the locations is managed by n
(which is set using N_PREFIX
). Your PATH
includes the copy installed by n
later, so is not run when you just type node
.
See also n doctor
which looks for a few configuration issues including this one.
One possible solution is to have the location you want to use earlier in your path, another is to delete the node copy you don't want. However, you can run the n
managed copy of node directly too which might be a good match for a CI type situation and not require any configuration changes.
n run
(or n use
) run the version of node you specify as a one-off command. e.g.
$ 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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With