Cli: [BUG] `npm install -g npm` menghapus perintah` npm`

Dibuat pada 18 Des 2019  ·  19Komentar  ·  Sumber: npm/cli

Apa sebabnya

npm perintah dihapus setelah menjalankan npm install -g npm .

Kapan



  • 2019/12/18

  • Saya tidak ingat persis kapan saya berhasil menjalankan perintah ini, tetapi setidaknya seminggu yang lalu.

Dimana



  • npm / cli

Bagaimana

Perilaku Saat Ini


Ini lognya:

~
% brew install node
==> Downloading https://homebrew.bintray.com/bottles/node-13.3.0_1.catalina.bottle.tar.gz
Already downloaded: /Users/manabu/Library/Caches/Homebrew/downloads/8a482358c0487b3ffeeebf4d1f3b3ca825018f6318ecdd6368fd0a6f45e0bea1--node-13.3.0_1.catalina.bottle.tar.gz
==> Pouring node-13.3.0_1.catalina.bottle.tar.gz
==> Caveats
Bash completion has been installed to:
  /usr/local/etc/bash_completion.d
==> Summary
🍺  /usr/local/Cellar/node/13.3.0_1: 4,663 files, 59MB

~
% npm install -g npm
/usr/local/bin/npx -> /usr/local/lib/node_modules/npm/bin/npx-cli.js
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
npm ERR! code EEXIST
npm ERR! syscall symlink
npm ERR! path ../../../lib/node_modules/npm/man/man1/npm-access.1
npm ERR! dest /usr/local/share/man/man1/npm-access.1
npm ERR! errno -17
npm ERR! EEXIST: file already exists, symlink '../../../lib/node_modules/npm/man/man1/npm-access.1' -> '/usr/local/share/man/man1/npm-access.1'
npm ERR! File exists: /usr/local/share/man/man1/npm-access.1
npm ERR! Remove the existing file and try again, or run npm
npm ERR! with --force to overwrite files recklessly.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/manabu/.npm/_logs/2019-12-18T07_51_00_280Z-debug.log

Saya mengonfirmasi bahwa ini terjadi lagi ketika saya kehabisan brew reinstall node .

Sebenarnya seperti yang dikatakan output, saya berhasil menjalankannya dengan --force tetapi saya pikir hanya menampilkan log ini lebih baik daripada menghapus perintah npm .

Edit (2020/01/11):

Sebenarnya seperti yang dikatakan output, saya berhasil menjalankannya dengan --force

Lebih khusus lagi, saya melakukan langkah-langkah ini:

  1. Kembalikan npm perintah yang telah dihapus oleh npm install -g npm

    • Karena saya menggunakan Homebrew untuk mengelola Node.js, saya menjalankan brew reinstall node untuk memulihkannya

  2. Jalankan npm install -g --force npm sebagai output yang disebutkan

Langkah-langkah untuk Mereproduksi

  • t / a

Perilaku yang Diharapkan

  • Memperbarui npm berhasil

WHO



  • t / a

Referensi



  • t / a

Bug

Komentar yang paling membantu

Solusi yang diringkas adalah:

brew reinstall node
npm i -g --force npm

Semua 19 komentar

terkait dengan perubahan @isaacs di https://github.com/npm/cli/commit/320ac9aeeafd11bb693c53b31148b8d10c4165e8 npm / bin-links # 12 npm / gentle-fs # 7 dirilis di [email protected]

muncul dengan benjolan NPM dari 6.13.2 ke 6.13.4 di homebrew https://github.com/Homebrew/homebrew-core/commit/6acc21a27d0ba4ecfd6ebf4d77af7025143daefe#diff -d3ef2414308e30df24a517ca9a1324ee (ditulis / berkomitmen dengan @pepyakin @fxcoudert @bayandin)

AFAICS ini adalah perilaku yang dimaksudkan di npm. Tidak jelas bagi saya bagaimana ini harus ditangani dalam pengaturan homebrew.

https://github.com/npm/cli/issues/672

Saya melakukan yarn global add npm dan menginstal [email protected] dan saya tidak menemukan kesalahan, tetapi sekarang semua paket global saya sebelumnya hilang: ((

Saya memilih keluar dari homebrew dan hanya menggunakan https://github.com/nvm-sh/nvm

Kerjakan saja

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash

Kemudian di suatu tempat di ujung, Anda akan melihat

=> Compressing and cleaning up git repository

=> Appending nvm source string to /Users/aprilmintacpineda/.bash_profile
=> Appending bash_completion source string to /Users/aprilmintacpineda/.bash_profile
=> Close and reopen your terminal to start using nvm or run the following to use it now:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

Lakukan saja source <name of profile> Dalam kasus saya <name of profile> adalah ~/.bash_profile jadi itu akan menjadi source ~/.bash_profile

kemudian

nvm install node untuk menginstal versi terbaru dari node, itu juga akan menginstal versi terbaru dari npm, dan itu berhasil untuk saya.

tidak yakin apakah jelas bagi semua orang di utas ini bahwa solusinya, mengingat Anda tahu apa yang Anda lakukan dan mengapa, sederhana

npm i -g --force npm (perhatikan bendera --force )

Masalahnya adalah, setelah melakukan npm -I npm dan mendapatkan kesalahan, mencoba sembarang perintah npm gagal dengan 'zsh: perintah tidak ditemukan: npm', jadi saya tidak dapat melakukan perintah --force bahkan jika saya mau. Saya harus membuat ulang node untuk mendapatkan npm kembali.

Maaf teman-teman, saya tidak sepenuhnya menjelaskan bagaimana saya menghindari masalah ini untuk sementara. Saya telah memperbarui deskripsi, silakan lihat.

tidak yakin apakah jelas bagi semua orang di utas ini bahwa solusinya, mengingat Anda tahu apa yang Anda lakukan dan mengapa, sederhana

npm i -g --force npm (perhatikan bendera --force )

Ini adalah satu-satunya solusi yang saya temukan untuk memperbaiki ini sebenarnya.

Kedua kalinya ini terjadi pada saya dalam beberapa minggu. Anda dapat memperbaikinya dengan brew reinstall node .

Inilah output yang saya jalankan npm install -g npm :

/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
/usr/local/bin/npx -> /usr/local/lib/node_modules/npm/bin/npx-cli.js
npm ERR! code EEXIST
npm ERR! syscall symlink
npm ERR! path ../../../lib/node_modules/npm/man/man1/npm-adduser.1
npm ERR! dest /usr/local/share/man/man1/npm-adduser.1
npm ERR! errno -17
npm ERR! EEXIST: file already exists, symlink '../../../lib/node_modules/npm/man/man1/npm-adduser.1' -> '/usr/local/share/man/man1/npm-adduser.1'
npm ERR! File exists: /usr/local/share/man/man1/npm-adduser.1
npm ERR! Remove the existing file and try again, or run npm
npm ERR! with --force to overwrite files recklessly.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/albertvilacalvo/.npm/_logs/2020-01-13T11_55_47_922Z-debug.log

Solusi yang diringkas adalah:

brew reinstall node
npm i -g --force npm

Ini terjadi tidak hanya dengan penginstalan homebrew. Saya memiliki masalah yang sama dengan penginstal nodejs (dari situs resmi). Perbaikannya berhasil, meskipun ... (sudo npm i -g --force npm)

Memperbarui npm menghapus npm? Dan itu tidak diperbaiki sejak desember?

Memperbarui npm menghapus npm? Dan itu tidak diperbaiki sejak desember?

Ya, itu juga terjadi pada saya di MacOS 10.15.2

Baru saja terjadi pada saya juga. MacOS Catalina 10.15.3

Ini baru saja terjadi pada saya di Ubuntu, dan saya tidak menggunakan "brew".

Saya akhirnya mencoba menginstal ulang npm, tetapi tidak mengizinkan saya menginstalnya tanpa sudo. Diinstal dengan sudo, kemudian temukan panduan (yang tampaknya buruk) untuk mengklaim kembali kepemilikan direktori ~ / .npm (dan beberapa lainnya). Pada awalnya masih tidak berfungsi, tetapi hash -r memperbaikinya (dalam retrospeksi, memulai ulang Ubuntu saya mungkin juga berfungsi). Ada kemungkinan kecil ini juga memperbaiki masalah yang saya alami dengan react-snap.

Bug ini dilaporkan pada tahun 2014 dan terjadi pada saya hari ini di tahun 2020. Benar-benar bencana. Apakah ini akan diperbaiki?

Saya memilih keluar dari homebrew dan hanya menggunakan https://github.com/nvm-sh/nvm

Kerjakan saja

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash

Kemudian di suatu tempat di ujung, Anda akan melihat

=> Compressing and cleaning up git repository

=> Appending nvm source string to /Users/aprilmintacpineda/.bash_profile
=> Appending bash_completion source string to /Users/aprilmintacpineda/.bash_profile
=> Close and reopen your terminal to start using nvm or run the following to use it now:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

Lakukan saja source <name of profile> Dalam kasus saya <name of profile> adalah ~/.bash_profile jadi itu akan menjadi source ~/.bash_profile

kemudian

nvm install node untuk menginstal versi terbaru dari node, itu juga akan menginstal versi terbaru dari npm, dan itu berhasil untuk saya.

Ini tidak terjadi jika Anda menggunakan nvm

"Ini tidak terjadi jika Anda menggunakan nvm"

Ya, itu tidak terjadi jika Anda menggunakan yarn juga, tapi saya tidak yakin itu relevan.

Saya pikir itu tidak relevan. NVM adalah manajer versi node, saya mengalami ini ketika saya menggunakan brew untuk menginstal node, kemudian saya beralih ke nvm, karena itu saya belum mengalami ini. Lihat di sini jika Anda tidak tahu apa itu https://github.com/nvm-sh/nvm#installing -and-update

Apakah halaman ini membantu?
0 / 5 - 0 peringkat