cek pembaruan npm gagal

14

saya benar-benar mencoba untuk menginstal nodejs bersama dengan npm di ubuntu 17.04 saya. saya mengunduh versi linux dari nodejs.org dan membuat tautan lunak untuk node dan nodejs. setelah memeriksa versi nodejs itu menunjukkan versi yang saya instal dan saya baik-baik saja dengan itu.

sekarang saya mencoba melakukan hal yang sama untuk npm. saya mencoba membuat tautan lunak untuk npm.

 sudo ln -sf /mnt/7A46BE1454633621/softwares/programming/frontend/nodejs/lib/node_modules/npm/bin/npm 
    /usr/bin/npm

saya tidak tahu tautan yang saya buat benar atau tidak. tetapi saat menjalankan npm -vperintah saya melihat versi 5.0.3 yang saya coba instal. versi ditampilkan tetapi tepat di bawahnya saya melihat sesuatu seperti ini.

5.0.3
npm update check failed                 │
│           Try running with sudo or get access           │
│          to the local update config store via           │
│ sudo chown -R $USER:$(id -gn $USER) /home/sagar/.config 
sagar limbu
sumber
Apakah Anda sudo chown -R $USER:$(id -gn $USER) /home/sagar/.configseperti yang disarankan?
George Udosen
Jika Anda menggunakan Docker, periksa kembali apakah sistem file hanya baca. Itu harus bisa ditulis.
Константин Ван

Jawaban:

14

Versi npm saya adalah 5.0.3 dan saya memiliki masalah yang sama ketika saya menggunakan perintah npm:

pesan kesalahan npm

Perintah ini berfungsi dengan baik tetapi kode ini terus muncul tanpa alasan yang jelas. Saya telah memperbarui 5.0.3 ke 5.2.0 dengan perintah ini:

sudo chown -R $USER:$(id -gn $USER) /home/sagar/.config

npm install -g npmatau npm i -g npm.

Sekarang npm bekerja dengan baik.

Arpit
sumber
Bekerja untukku. Meskipun, saya harus memperbarui npmsebagai root dengan sudo npm i -g npm. Diperbarui npm hingga 6.0.1
Denialos
3

Persis masalah yang sama bagi saya, tetapi tampaknya tidak terkait dengan versi (saya menggunakan npm 5.5.1). Memperbaiki hak untuk ~/.configmembuat trik untuk saya:

sudo chown -R $USER:$(id -gn $USER) ~/.config

Saya kira ini terkait dengan beberapa masalah pemilik ~/.config/configstore/update-notifier-npm.json.

Anto
sumber
1

Saya telah mengubah pemilik

~/configstore

dan

~/configstore/update-notifier-npm.json

ke $ USER: $ USER.

Dugaan saya adalah menjalankan npmdengan sudo membuat file itu. Setidaknya pada sistem saya kami menemukan ini:

$ env | grep  -e HOME= -e "^USER="
USER=craig
HOME=/home/craig

$ sudo env | grep  -e HOME= -e "^USER="
HOME=/home/craig
USER=root

Jadi jika sudo npmdikodekan untuk membuatnya ~/configstore/update-notifier-npm.jsonakan melakukannya dengan direktori home user biasa. Itu menciptakan masalah ketika nanti berjalan npmtanpanya sudojuga ingin membaca dan mungkin menulis ~/configstore/update-notifier-npm.json. Untuk beberapa alasan, ijinnya adalah 600 untuk keduanya.

Berhati-hatilah saat chowndan chmod-ai semuanya di bawah ~/.config, mungkin ada sesuatu yang sensitif di sana.

Craig Hicks
sumber
1

Tolong, jangan gunakan chownperintah yang disediakan dalam pesan kesalahan. Path ~/.configdigunakan oleh banyak aplikasi dan merupakan path standar untuk menyimpan informasi konfigurasi. Tidak disarankan untuk mengubah hak grup di sana. Lebih baik ubah saja jalur yang diperlukan seperti:

sudo chown -R $USER ~/.config/configstore

Kasus khusus: Docker

Kasus umum untuk mendapatkan kesalahan ini adalah menggunakan sesuatu seperti Docker (terutama dengan memasang rumah Anda sendiri). Pertimbangkan pengaturan variabel lingkungan seperti NPM_CONFIG_CACHEdan XDG_CONFIG_HOME. Yang pertama mengatur jalur cache Anda dan yang terakhir adalah mengatur jalur configstore Anda. Saya tidak akan menggunakan .configfolder di direktori home untuk menghindari masalah dengan kepemilikan file. Tetapi menggunakan cache membantu layanan seperti NPM untuk menghemat bandwidth. Cobalah untuk menghindari unduhan berlebih pada setiap bangunan dan gunakan sesuatu seperti ini (tetapi periksa bahwa target seperti /tmpmemiliki ruang disk yang cukup):

test -d /tmp/$USER/cache || mkdir -p /tmp/$USER/cache
docker run \
  -v /tmp/$USER:/tmp/$USER \
  -e "NPM_CONFIG_CACHE=/tmp/$USER/cache/npm" \
  -e "XDG_CONFIG_HOME=/tmp/$USER/cache/" \
  ...
Trendfischer
sumber
0

Nah, hal pertama yang bisa kita lakukan untuk menyelesaikan masalah ini adalah

  1. Pastikan Anda telah mencentang opsi dalam pengaturan folder untuk melihat file yang tersembunyi.
  2. Klik kanan pada file .config dan pilih properti lalu klik pada tab izin.
  3. Dalam izin folder dan izin file untuk grup | pemilik | lainnya centang opsi baca, tulis, dan eksekusi.
  4. AT klik di bawah pada Terapkan izin ke file terlampir.
  5. Sekarang coba jalankan kembali perintah npm yang sama di mana Anda melihat pesan-pesan itu dan sekarang harus hilang selamanya.

Jika ini membantu Anda tahu apa yang harus dilakukan.

Catatan: Prosedur yang sama juga dapat diterapkan untuk configstore saja dalam folder .config.

Raju
sumber