Saya telah menyebutkan bahwa aplikasi saya menggunakan versi NodeJS yang berbeda saat dijalankan sudo
.
$ node -v
v0.10.23
$ sudo node -v
v0.11.8-pre
Ini v0.11.8-pra menyebabkan saya beberapa masalah, jadi saya pasti tidak ingin menggunakannya, tapi aku tidak bisa mengubahnya untuk root.
$ sudo nvm use v0.10.23
sudo: nvm: command not found
Saya sudah mencoba menginstal nvm dari pengguna root, tetapi mendapat kesalahan "NVM sudah diinstal", tetapi nvm masih tidak ditemukan saat menjalankan dari sudo
. Apa masalah saya?
sudo -s
lalu instalnvm
.Jawaban:
Daftar perintah di bawah ini (sumber: digitalocean ) tampaknya memperbaiki masalah
Perintah di atas agak rumit, tetapi yang dilakukannya hanyalah menyalin versi node apa pun yang Anda aktifkan melalui nvm ke
/usr/local/
direktori (di mana pengguna menginstal file global harus tinggal di VPS linux) dan mengatur izin sehingga semua pengguna dapat mengaksesnya .Semoga ini membantu!
sumber
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’
Solusi saya adalah membuat tautan simbolik dari versi
node
dannpm
saya gunakan untuk/usr/local/bin
:Ini membuat
npm
dannode
tersedia untuk semua pengguna.sumber
npx
sering menggunakan . Jadi saya menambahkan juga:sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npx" "/usr/local/bin/npx"
babel-node
Masalah Anda adalah, itu
nvm
tidak di jalan saat Anda menggunakansudo
.Jadi ketik
dan hasilnya akan seperti ini
Coba lagi sekarang dengan
sudo
:Saya berasumsi Anda kemudian mengalami masalah bahwa pengguna root tidak dapat menemukan versi 0.10.13, tetapi mari kita lihat pesan kesalahan berikutnya ...
sumber
which nvm
tidak menghasilkan apasudo
. Ya, saya dapat masuk sebagai root dan menginstal nvm, tetapi di masa mendatang saya tidak dapat menjalankannyasudo nvm use v0.10.25
. Jadi saya tidak bisa menggunakansudo node
dari pengguna juga.which nvm
tidak pernah berhasil, bukan?nvm
bukanlah sebuah eksekusi, ini adalah fungsi shell. github.com/creationix/nvm/issues/540which nvm
sini: stackoverflow.com/questions/49156104/… Gunakantype nvm
untuk mengungkapkan definisinya. Seperti yang dikatakan Matt, ini adalah fungsi shell.Alasan mendasar adalah karena
nvm
bukan program nyata. Ini adalah fungsi bash yang akan dimuat di pengguna.profile
,.bashrc
atau ... Jadisudo
tidak secara otomatis mengambilnya dari $ PATH seperti kebanyakan program lainnya.Manajer versi node alternatif adalah
n
: https://github.com/tj/n . Itu adalah program nyata, jadisudo
akan mengambilnya melalui $ PATH tanpa peretasan (selamasudo
ada/usr/local/bin
di $ PATH-nya).sumber
Menurut README
Butuh sudo npm?
Dalam kasus saya, saya memerlukan
sudo npm run start
akses ke beberapa file yang memerlukan akses root. Menurut masalah ini ,Alhasil
Pengelola nvm sangat yakin kami tidak perlu
sudo
: Psumber
Saya punya masalah Anda juga. Akhirnya saya berhasil mengatasinya. Inilah solusi saya:
apt-get purge nodejs
.Setelah memulai ulang terminal Anda, Anda dapat menjalankan perintah
sudo nvm ls
.sumber
sumber
Saya telah mencoba hal yang sama pada mesin saya di mana saya juga memilikinya
nvm
dan saya memiliki respons yang sedikit berbeda:Dugaan saya adalah Anda telah menginstal node 0.11 di luar nvm. ( Melalui manajer paket atau bahkan dari sumber )
Oleh karena itu, menjalankan node melalui sudo akan mengambil node mandiri ini sebagai gantinya.
Apakah itu masuk akal atau saya salah?
sumber
Instal nvm secara global dengan
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | sudo bash
sumber
| bash
, tidak ada sudo di mana pun: nvm-sh / nvm: Node Version ManagerSolusi termudah untuk ini kemungkinan akan cukup dengan menekan nvm.sh yang dapat dieksekusi di mana pun itu.
Ini berfungsi dengan baik untuk saya (dengan asumsi itu jalur instal).
Prosedur penginstalan lengkap akan terlihat seperti ini
Dan kemudian Anda dapat menjalankan perintah di atas untuk menekan nvm.sh yang baru diinstal
sumber