Команда n <version>не активирует указанную версию - PullRequest
0 голосов
/ 08 апреля 2020

В настоящее время на сервере Jenkins установлены две версии узла.

$ n list
node/10.9.0
node/12.14.1

Я пытаюсь перейти на версию 10.9.0 для конкретной сборки c, которая требует этого.

Сначала я попытался использовать 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? Есть ли что-то в вышеперечисленном, чего не хватает? Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 10 апреля 2020

У вас есть копии узлов, установленных в нескольких местах, но только один из них управляется 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
0 голосов
/ 09 апреля 2020

После запуска 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
...