sudo: npm: perintah tidak ditemukan

201

Saya mencoba meningkatkan ke versi terbaru dari node. Saya mengikuti instruksi di http://davidwalsh.name/upgrade-nodejs

Tetapi ketika saya melakukannya:

sudo npm install -g n

Saya mendapatkan kesalahan:

sudo: npm: command not found

npm bekerja tanpa sudo. Ketika saya melakukannya:

whereis node

Saya melihat:

node: /usr/bin/node /usr/lib/node /usr/bin/X11/node /usr/local/node

Berlari:

which npm

Menunjukkan:

/usr/local/node/bin/npm

Saya mencoba solusinya di https://stackoverflow.com/a/5062718/1246159

Tapi saya masih mendapatkan kesalahan yang sama. Saya juga melihat file / etc / sudoers dan baris yang relevan adalah:

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

Ini terlihat baik bagi saya. Bagaimana saya bisa membuat NPM bekerja dengan perintah sudo?

Menandai
sumber
4
Apakah ini berhasil? sudo /usr/bin/npm install -g n
robertklep
2
Bisakah Anda mencoba menginstal ulang node? Sepertinya Anda menghapus npm.
Jeff Sloyer
1
Anda mungkin telah menambahkan /usr/local/node/binke Anda $PATH, tetapi npmharus diinstal dalam /usr/local/bin. Direktori pertama tidak secure_pathmenjelaskan mengapa sudotidak dapat menemukannya.
robertklep
1
Menggunakan nvmUbuntu di sini - dengan komentar @robertklep, saya mencoba sudo /home/${user}/.nvm/version/node/${version}/bin/npm installdan berhasil.
Stav Pan Geffen
2
Ini memecahkan masalah saya dengan menginstal ulang dari paket berikut. nodejs.org/en/download
Marghoob Suleman

Jawaban:

125

File npm harus dalam /usr/local/bin/npm. Jika tidak ada, instal node.js lagi dengan paket di situs web mereka . Ini berhasil dalam kasus saya.

inga
sumber
Terima kasih. Jika Anda menginstal node di drive data lain, di mana os tidak diinstal, Anda tidak dapat menemukan jalur ini.
Hardik Darji
1
dalam kasus mac os dengan homebrew .. dua langkah yang harus dilakukan adalah (1) node mana (2) yang npm yang harus keduanya di / usr / local / bin (di mana homebrew menginstal / symlinks node + npm) ... untuk menyelesaikan .. coba (1) brew doctor (2) brew instal node jika masih bermasalah .. periksa path Anda (echo $ PATH). Anda harus memiliki beberapa lokasi bin yang mengarah ke berbagai instalasi simpul .. jika itu yang terjadi ... pembersihan (seperti membuatnya lebih rapi) ~ / .bashrc / ~ / .bash_profile Anda, maka / usr / local / bin ada di sana dimuat tanpa satu lagi menunjuk ke instalasi simpul acak.
Jimmy MG Lim
3
Ini adalah solusi parsial. Masalah terjadi ketika Anda menginstal simpul secara manual. Anda harus softlink setiap biner yang diinstal ke / usr / bin atau / usr / local / bin. Menyetel path di bashrc root tidak akan berfungsi karena tidak dibaca selama sudo oleh karena itu ini adalah satu-satunya cara tampaknya kecuali Anda menginstal paket.
Ternak udang
seperti @shrimpwagon katakan, bagian bawah instruksi manual memberitahu Anda untuk menautkan "sudo ln -s / usr / local / lib / nodejs / node- $ VERSION- $ DISTRO / bin / node / usr / bin / node sudo ln -s / usr / local / lib / nodejs / node- $ VERSION- $ DISTRO / bin / npm / usr / bin / npm sudo ln -s / usr / local / lib / nodejs / node- $ VERSION- $ DISTRO / bin / npx / usr / bin / npx "
James Nelson
169

saya harus melakukan

sudo apt-get install npm

itu berhasil untuk saya.

Velocibadgery
sumber
6
Sulit untuk memahami apa yang ingin Anda ungkapkan.
sinar matahari kecil
4
Ini sudah ketinggalan zaman. Apa yang berhasil bagi saya adalah perintah-perintah ini yang saya temukan di sini: github.com/nodesource/distributions#debinstall # Menggunakan Ubuntu curl -sL deb.nodesource.com/setup_5.x | sudo -E bash - sudo apt-get install -y nodejs # Menggunakan Debian, sebagai root curl -sL deb.nodesource.com/setup_5.x | bash - apt-get install -y nodejs
Hamed
4
@tinysunlight Saya tidak yakin apa yang tidak jelas. Op mengatakan perintah npm tidak ada. Perintah ini menginstal perintah npm.
Velocibadgery
7
Ini bukan jawaban yang benar untuk pertanyaan karena jelas dari op yang npmsudah diinstal tetapi tidak dapat dijangkau ketika dipanggil melalui sudo. Dengan solusi ini Anda menginstal ulang npm yang sudah ada. Ini melawan gejala daripada mencari penyebabnya. Saya mengerti bahwa ini mungkin memperbaiki hal-hal yang rusak untuk beberapa orang, tetapi itu menyesatkan, berdiri seperti ini.
Dominic
4
Ketika saya menginstal node menggunakan NVM pada Ubuntu 18.10, sudo tidak mengenali npm sebagai perintah. sudo apt-get install npmbekerja untukku.
AlienKevin
91

Untuk pengguna MAC, langkah-langkah ikuti berhasil untuk saya.

$ brew update
$ brew uninstall node
$ brew install node
$ brew postinstall 
Gao
sumber
5
Itu brew uninstall nodetidak bekerja untuk saya, tetapi saya melanjutkan dengan brew install nodedan brew postinstalldan itu memperbaiki masalah. Terima kasih
Trevor
2
Apa yang brew postinstalldilakukan sebenarnya?
Oliver D
dalam versi Homebrew 2.2.14 brew postinstallberlebihan
Arslan Khan
63

Saya memiliki masalah yang sama; berikut adalah perintah untuk memperbaikinya:

  • sudo ln -s /usr/local/bin/node /usr/bin/node
  • sudo ln -s /usr/local/lib/node /usr/lib/node
  • sudo ln -s /usr/local/bin/npm /usr/bin/npm
  • sudo ln -s /usr/local/bin/node-waf /usr/bin/node-waf
Vasanth Umapathy
sumber
2
Bekerja untuk saya di CentOS 7
hirikarate
4
Bekerja untuk saya Ubuntu 16.04.1 LTS. Saya menggunakan NVM jadi jalur pertama adalah ke tempat NVM menginstal node dan npm (path menyertakan versi %HOME%/.nvm/versions/node/v7.4.0/bin/npm). Sayangnya saya harus referensi jawaban ini setiap kali saya memperbarui menggunakan NVM karena bagaimana versi di jalan akan berubah
kas
1
Ini menyelesaikannya untuk saya juga! Awalnya diposting di Stack Overflow: Pada EC2: perintah sudo node tidak ditemukan, tetapi node tanpa sudo ok
Dominic
2
@kas sudo ln -s $(whereis node) /usr/bin/node Dan sebagainya. di profil bash Anda.
Aravind Voggu
Bekerja untuk saya dalam contoh AWS ec2.
Chirag Purohit
26

PERINGATAN (edit)

Melakukan sebuah chmod 777solusi yang cukup radikal. Coba ini dulu, satu per satu, dan berhenti ketika satu bekerja:

  • $ sudo chmod -R 777 /usr/local/lib/node_modules/npm
  • $ sudo chmod -R 777 /usr/local/lib/node_modules
  • $ sudo chmod g+w /usr/local/lib
  • $ sudo chmod g+rwx /usr/local/lib

$ brew postinstall node adalah satu-satunya bagian instal di mana saya akan mendapatkan masalah

Permission denied - /usr/local/lib/node_modules/npm/.github

Jadi saya

// !! READ EDIT ABOVE BEFORE RUNNING THIS CODE !!
$ sudo chmod -R 777 /usr/local/lib
$ brew postinstall node

dan viola, npm sekarang terhubung

$ npm -v
3.10.10

Tambahan

Jika Anda digunakan -R 777pada lib rekomendasi saya akan mengatur file bersarang dan direktori ke pengaturan default:

  • $ find /usr/local/lib -type f -print -exec chmod 644 {} \;
  • $ find /usr/local/lib -type d -print -exec chmod 755 {} \;
  • $ chmod /usr/local/lib 755
Jacksonkr
sumber
3
@Jacksonkr ..... apakah Anda baru saja merekomendasikan chmoding 777 seluruh folder lokal / lib?
sfratini
Apa yang chmodseharusnya menjadi direktori ini?
tim_xyz
1
@tim_xyz drwxr-xr-xadalah default untuk lib. Karena itu, JANGAN gunakan fitur rekursif -Rsaat mengatur folder kembali.
Jacksonkr
Terima kasih! sudo chmod -R 777 / usr / local / lib / node_modules bekerja untuk saya
Hisagr
18

Saya harus melakukan hal berikut:

  1. brew update
  2. brew uninstall node
  3. Kunjungi https://nodejs.org/en/ unduh file
  4. Instal file yang diunduh
maudulus
sumber
2
Anda seorang pahlawan.
Abdulaziz Noor
8

Untuk pengguna CentOS, ini bekerja untuk saya:

sudo yum install npm
江南 消夏
sumber
1
masalah dengan pendekatan ini adalah bahwa di Fedora misalnya, sangat ketinggalan jaman di dnf / yum repos
ACV
2
Pada CentOS 7 Anda harus mengaktifkan repo EPEL terlebih dahulu:yum install epel-release; yum install npm
hudolejev
8

Untuk menginstal paket npm secara global dengan izin sudo, /usr/bin/npmharus tersedia. Jika npmada di beberapa direktori lain, buat tautan lunak seperti:

sudo ln -s /usr/local/bin/npm /usr/bin/npm

Ia bekerja pada Fedora 25, node8.0.0 dan npm5.0.0

Prakash Ramasamy
sumber
6

Di macOS, ini bekerja untuk saya:

brew reinstall node
friederbluemle
sumber
1
Maaf hanya memperhatikan pertanyaan ini ditandai unix, tetapi mungkin masih membantu karena ini adalah hasil pencarian Google teratas untuk "perintah macos npm tidak ditemukan"
friederbluemle
5

Untuk debian setelah menginstal simpul masuk

curl -k -O -L https://npmjs.org/install.sh    
ln -s /usr/bin/nodejs /usr/bin/node  
sh install.sh
Shaharyar Zafar
sumber
5

Jika Anda menginstal node / npm dengan nvm, file konfigurasi lingkungan nvm harus dijalankan sebelum Anda dapat menggunakan salah satu paket.

Ini umumnya ditemukan di ~ / .nvm / nvm.sh.

Untuk menjalankan ini secara otomatis, sertakan:

source ~/.nvm/nvm.sh

dalam file .bash_profile untuk pengguna Anda

Jika Anda kemudian ingin menggunakan sudo dengan pengguna itu, pastikan untuk menyertakan parameter -i untuk membuat sudo mengatur lingkungan pengguna. misalnya

sudo -iu jenkins npm install grunt-cli
Garreth McDaid
sumber
4

cukup instal ulang.

Di RHEL, CentOS dan Fedora

sudo yum remove nodejs npm
sudo dnf remove nodejs npm   [On Fedora 22+ versions]

kemudian

yum -y install nodejs npm
dnf -y install nodejs npm   [On Fedora 22+ versions]

mudah! .. kedua node dan npm berfungsi seperti jimat sekarang!

Brian Sanchez
sumber
3

Saya menyelesaikan masalah ini dengan

apt-get install npm2deb
Игорь Демянюк
sumber
1
apa jawaban ini? npm2deb adalah pihak ke-3
Beau Bouchard
1
itu tidak sepenuhnya "dipercaya" karena pihak ke-3 lebih mungkin dikompromikan daripada dari npm langsung dari sumbernya. saya tidak tahu apa-apa tentang npm2deb tetapi pikirkan jika Anda ingin menggunakannya di perusahaan Anda, mereka mungkin akan ketat mengauditnya
Kyle Calica-St
Ini jelas bagi semua orang.
Игорь Демянюк
1

Saya memiliki masalah yang sama, alasannya adalah manajer paket npm tidak diinstal saat menginstal node. Ini disebabkan karena kesalahan berikut: Dalam proses instalasi ada langkah yang disebut "Pengaturan Kustom", di sini Anda memiliki pilihan untuk memilih salah satu dari yang berikut: 1) runtime Node.js (Ini dipilih secara default). 2) manajer paket npm 3) Pintasan dokumentasi online. 4) Tambahkan ke Path. Jika Anda melanjutkan karena ini paket manager npm tidak akan diinstal dan karenanya Anda akan mendapatkan kesalahan.

Solusi: Pilih manajer paket npm ketika Anda mendapatkan opsi ini. Ini berhasil untuk saya.

Saurabh Shetty
sumber
1

Jika Anda telah mengunduh paket simpul dan mengekstraksi di suatu tempat seperti /optAnda cukup membuat tautan simbolik di dalamnya /usr/local/bin.

/usr/local/bin/npm -> /opt/node-v4.6.0-linux-x64/bin/npm
/usr/local/bin/node -> /opt/node-v4.6.0-linux-x64/bin/node
mipasov
sumber
1

Saya juga memiliki masalah yang sama di Homestead dan mencoba banyak cara. Saya mencoba

sudo apt-get install nodejs

Saya mendapatkan kesalahan berikut:

The following packages have unmet dependencies:
 npm : Depends: nodejs but it is not going to be installed
       Depends: node-abbrev (>= 1.0.4) but it is not going to be installed
       Depends: node-ansi (>= 0.3.0-2) but it is not going to be installed
       Depends: node-ansi-color-table but it is not going to be installed
       Depends: node-archy but it is not going to be installed
       Depends: node-block-stream but it is not going to be installed
       Depends: node-fstream (>= 0.1.22) but it is not going to be installed
       Depends: node-fstream-ignore but it is not going to be installed
       Depends: node-github-url-from-git but it is not going to be installed
       Depends: node-glob (>= 3.1.21) but it is not going to be installed
       Depends: node-graceful-fs (>= 2.0.0) but it is not going to be installed
       Depends: node-inherits but it is not going to be installed
       Depends: node-ini (>= 1.1.0) but it is not going to be installed
       Depends: node-lockfile but it is not going to be installed
       Depends: node-lru-cache (>= 2.3.0) but it is not going to be installed
       Depends: node-minimatch (>= 0.2.11) but it is not going to be installed
       Depends: node-mkdirp (>= 0.3.3) but it is not going to be installed
       Depends: node-gyp (>= 0.10.9) but it is not going to be installed
       Depends: node-nopt (>= 3.0.1) but it is not going to be installed
       Depends: node-npmlog but it is not going to be installed
       Depends: node-once but it is not going to be installed
       Depends: node-osenv but it is not going to be installed
       Depends: node-read but it is not going to be installed
       Depends: node-read-package-json (>= 1.1.0) but it is not going to be installed
       Depends: node-request (>= 2.25.0) but it is not going to be installed
       Depends: node-retry but it is not going to be installed
       Depends: node-rimraf (>= 2.2.2) but it is not going to be installed
       Depends: node-semver (>= 2.1.0) but it is not going to be installed
       Depends: node-sha but it is not going to be installed
       Depends: node-slide but it is not going to be installed
       Depends: node-tar (>= 0.1.18) but it is not going to be installed
       Depends: node-underscore but it is not going to be installed
       Depends: node-which but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Akhirnya saya mencobanya

sudo apt-get dist-upgrade

Itu bekerja dengan baik.

root@homestead:/usr/local/bin# npm -v
3.10.10

root@homestead:/usr/local/bin# node -v
v6.13.0
Thowfeek
sumber
1

Bekerja untuk saya Menyelesaikan kesalahan izin EACCES saat menginstal paket secara global

Untuk meminimalkan kemungkinan kesalahan izin, Anda dapat mengonfigurasi npm untuk menggunakan direktori lain. Dalam contoh ini, Anda akan membuat dan menggunakan direktori tersembunyi di direktori home Anda.

Cadangkan komputer Anda. Di baris perintah, di direktori home Anda, buat direktori untuk instalasi global:

 mkdir ~/.npm-global

Konfigurasikan npm untuk menggunakan jalur direktori baru:

 npm config set prefix '~/.npm-global'

Di editor teks pilihan Anda, buka atau buat file profil ~ /. Dan tambahkan baris ini:

 export PATH=~/.npm-global/bin:$PATH

Pada baris perintah, perbarui variabel sistem Anda:

 source ~/.profile

Untuk menguji konfigurasi baru Anda, instal paket secara global tanpa menggunakan sudo:

 npm install -g jshint
eustatos
sumber
Ini bekerja dengan baik dan menyelamatkan banyak masalah!
Sumomo
0

Menambahkan jalur biner npm ke jalur sudo menggunakan visudo dan mengedit "secure_path"

Sekarang "sudo npm" berfungsi

mauricio777
sumber
0

Hapus Node sepenuhnya:

  brew uninstall --force node

Pasang lagi:

brew install node;
which node # => /usr/local/bin/node
export NODE_PATH='/usr/local/lib/node_modules'
ASHISH RANJAN
sumber
0

Seandainya bisa bermanfaat bagi siapa saja yang menggunakan rh-*paket ini bekerja untuk saya:

sudo ln -s /opt/rh/rh-nodejs8/root/usr/bin/npm /usr/local/bin/npm
Lionel T
sumber
0

Karena saya telah menginstal node.js menggunakan file .tar yang tersedia di node.js, saya harus meletakkan lokasi direktori node di:

~ / .bashrc

dari root dengan mengubah dari pengguna normal ke root menggunakan perintah:

sudo -i

maka saya harus menambahkan path ke node tempat saya mengekstraknya ke file .bashrc seperti di bawah ini: masukkan deskripsi gambar di sini

kemudian merujuk .bashrc menggunakan

. ~ / .bashrc

setelah itu

npm: command not found

pergi

MOHAMMAD WASEEM
sumber
0

Bagi saya, salah satu metode yang disebutkan di atas menggunakan Homebrew tidak berfungsi pada macOS. Jadi, saya menghapus instalan node menggunakan Homebrew dan mengunduh paket simpul dari https://nodejs.org/en/download/ dan menginstalnya. Itu bekerja seperti pesona.

Manas
sumber
-8

Install node.js & jalankan saja

npm install -g bower 

dari dir proyek Anda

YathuGulan Uthayan
sumber