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?


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.


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.


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 

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

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

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


8

Untuk pengguna CentOS, ini bekerja untuk saya:

sudo yum install npm

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


6

Di macOS, ini bekerja untuk saya:

brew reinstall node

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

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

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!


3

Saya menyelesaikan masalah ini dengan

apt-get install npm2deb

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.


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

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


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

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


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'

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

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


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.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.