Я уже упоминал, что мое приложение использует другую версию NodeJS при запуске из sudo
.
$ node -v
v0.10.23
$ sudo node -v
v0.11.8-pre
Эта версия v0.11.8-pre вызвала у меня некоторые проблемы, поэтому я определенно не хочу ее использовать, но я не могу изменить ее для root.
$ sudo nvm use v0.10.23
sudo: nvm: command not found
Я попытался установить nvm от имени пользователя root, но получил ошибку «NVM уже установлен», но nvm все равно не найден при запуске из sudo
. В чем моя проблема?
sudo -s
Затем попробуйте установитьnvm
.Ответы:
Приведенный ниже список команд (источник: digitalocean ), похоже, решает проблему.
Вышеупомянутая команда немного сложна, но все, что она делает, - это копирование любой версии узла, которая у вас активна через nvm, в
/usr/local/
каталог (где установленные пользователем глобальные файлы должны находиться на Linux VPS) и установка разрешений, чтобы все пользователи могли получить к ним доступ. .Надеюсь это поможет!
источник
chmod: cannot operate on dangling symlink ‘/home/ec2-user/.nvm/versions/node/v7.1.0/bin/node-debug’ chmod: cannot operate on dangling symlink ‘/home/ec2-user/.nvm/versions/node/v7.1.0/bin/node-inspector’
Мое решение создать символические ссылки из версий ,
node
иnpm
я использую для/usr/local/bin
:Это делает
npm
и становитсяnode
доступным для всех пользователей.источник
npx
довольно часто. Так что я тоже добавил:sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npx" "/usr/local/bin/npx"
babel-node
Ваша проблема в том, что
nvm
это не на пути, когда вы используетеsudo
.Так что типа
и результат будет примерно таким
Повторите попытку сейчас
sudo
:Я предполагаю, что затем вы столкнетесь с проблемой, что пользователь root не может найти версию 0.10.13, но позволяет увидеть следующее сообщение об ошибке ...
источник
which nvm
ничего не выводитsudo
. Да, я могу войти в систему как root и установить nvm, но в будущем я не мог работатьsudo nvm use v0.10.25
. Так что я тоже не мог использоватьsudo node
от пользователя.which nvm
никогда не работает, не так ли?nvm
не исполняемый файл, это функция оболочки. github.com/creationix/nvm/issues/540which nvm
здесь: stackoverflow.com/questions/49156104/… Используйте,type nvm
чтобы раскрыть его определение. Как сказал Мэтт, это функция оболочки.Основная причина в том, что
nvm
это не настоящая программа. Это функция Баша , которая загружается в пользователе.profile
,.bashrc
или ... Такsudo
что не автоматически забрать его из $ PATH , как и большинство других программ.Альтернативный менеджер версий узлов
n
: https://github.com/tj/n . Это настоящая программа, поэтому онаsudo
будет загружаться через $ PATH без каких-либо взломов (еслиsudo
есть/usr/local/bin
в ее $ PATH).источник
Согласно README
Нужен sudo npm?
В моем случае мне нужен
sudo npm run start
доступ к какому-то файлу, требующему root-доступа. Согласно этому вопросу ,В сумме
Сопровождающий nvm твердо уверен, что нам не нужно
sudo
: Pисточник
У меня тоже была твоя проблема. Наконец я обошел это. Вот мое решение:
apt-get purge nodejs
.После перезапуска терминала вы можете запустить команду
sudo nvm ls
.источник
источник
Я пробовал то же самое на своей машине,
nvm
и у меня есть немного другой ответ:Я предполагаю, что вы установили узел 0.11 вне nvm. ( Через диспетчер пакетов или даже из источника )
Следовательно, запуск node через sudo вместо этого выберет этот автономный узел.
В этом есть смысл или я ошибаюсь?
источник
Установите nvm глобально с помощью
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | sudo bash
источник
| bash
, sudo нигде нет: nvm-sh / nvm: Node Version ManagerСкорее всего, самым простым решением будет просто запустить исполняемый файл nvm.sh, где бы он ни находился.
Это отлично работает для меня (при условии, что это путь установки).
Полная процедура установки будет выглядеть так:
А затем вы можете запустить приведенную выше команду, чтобы открыть только что установленный nvm.sh
источник