Saya sudah mencoba menjalankan instalasi npm pada file package.json saya, tetapi saya mengalami banyak masalah. Ia terus mengatakan "Kesalahan: Mencoba membuka kunci XXX, yang belum dikunci" pada semua ketergantungan saya. Ini salah satunya:
Error: Attempt to unlock tbd@~0.6.4, which hasn't been locked
at unlock (/usr/local/lib/node_modules/npm/lib/cache.js:1304:11)
at cb (/usr/local/lib/node_modules/npm/lib/cache.js:646:5)
at /usr/local/lib/node_modules/npm/lib/cache.js:655:20
at /usr/local/lib/node_modules/npm/lib/cache.js:1290:7
at /usr/local/lib/node_modules/npm/node_modules/lockfile/lockfile.js:167:38
at OpenReq.Req.done (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:144:5)
at OpenReq.done (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:64:22)
at Object.oncomplete (fs.js:107:15)
Jika saya mencoba menjalankannya sebagai sudo, sepertinya semakin jauh dan mulai menginstal beberapa paket, tetapi beberapa kesalahan baru muncul sebagai gantinya:
> chokidar@0.8.1 postinstall /Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/chokidar
> node setup-deps.js
shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied
node.js:811
var cwd = process.cwd();
^
Error: EACCES, permission denied
at Function.startup.resolveArgv0 (node.js:811:23)
at startup (node.js:58:13)
at node.js:902:3
npm ERR! error rolling back Error: ENOTEMPTY, rmdir '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/q'
npm ERR! error rolling back karma@0.10.9 { [Error: ENOTEMPTY, rmdir '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/q']
npm ERR! error rolling back errno: 53,
npm ERR! error rolling back code: 'ENOTEMPTY',
npm ERR! error rolling back path: '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/q' }
npm ERR! Error: ENOENT, chown '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/socket.io/lib/socket.io.js'
Saya baru-baru ini memperbarui instalasi node dan npm saya. Jadi mungkin itu ada hubungannya dengan itu. Juga, sebagian besar pengembangan saya telah di kantor dan hari ini saya sedang mengerjakan VPN, jadi mungkin itu ada hubungannya dengan itu juga.
Ada ide?
node.js
npm
karma-runner
TJ Kirchner
sumber
sumber
Jawaban:
Sesuai photusenigma di: https://github.com/npm/npm/issues/4815
Jalankan perintah ini di jendela terminal (catatan - JANGAN ganti bagian $ USER ... itu perintah linux untuk mendapatkan pengguna Anda!):
... dan ... jika Anda menggunakan mac (seperti saya), dan masih melihat kesalahan setelah menjalankan perintah ini, maka jalankan yang terakhir ini dan Anda akan menjadi baik. (Rekomendasikan Anda mencoba pengujian sebelum melakukannya. Saya tidak suka mengubah izin pada direktori SELURUH / usr / lokal kecuali jika itu benar-benar diperlukan!)
sumber
sudo chown -R `whoami` /usr/lib/node_modules/
chown
tidak mengubah izin~/.npm/_locks
bagi saya. Saya mendapatkan milik saya dengan menjalankansudo chown -R myname ~/.npm/_locks
sudo chown -R $USER /usr/local/lib/node_modules
? Saya menjalankannya sebelum membaca bahwa itu bukan ide yang baik ..Saya bekerja dengan rekan kerja sore ini dan mencari tahu apa masalahnya. Folder ".npm" saya di direktori home saya dimiliki oleh pengguna root dan bukan saya. Saya tidak yakin apa yang menyebabkan itu. Mungkin saya menginstal node atau npm sebagai admin root pada satu titik. Bagaimanapun saya hanya berlari
sudo chown -R [username] .npm
dan akhirnya saya bisa menjalankannpm install
perintah dari proyek saya lagi!sumber
~/tmp/
sama juga, atau lokasi apa pun yang digunakan Node sebagai lokasi tempDalam kasus saya masalahnya adalah meminta npm dengan pengguna yang tidak memiliki direktori HOME, jadi misalnya perintah berikut akan gagal:
Solusinya adalah menyediakan direktori HOME, di mana
someUser
memiliki akses tulis:sumber
sudo -u someUser -i
, yang memulai shell login baru. Saya melihat ini lagi dan kode caching di npm menggunakan variabel npm.cache, yang saya tebak secara default$HOME/.npm/
. sudo juga dapat memiliki perilaku berbeda dengan variabel HOME yang akan diatur tergantung pada konfigurasi dan ada atau tidak adanya opsi baris perintah.Punya masalah yang sama dan memperbaikinya dengan mengubah pengajuan sesuai jawaban yang diterima:
Namun, perintah kedua harus dihindari karena menurunkan izin sumber daya sistem (
sudo chown -R $USER /usr/local/lib/node_modules
). Bukan ide yang bagus.Sebagai catatan: "usr"
/usr/local
adalah kependekan dari Unix System Resources .sumber
Tak satu pun dari ini bekerja untuk saya. Saya harus menjalankannya sebagai root dengan melakukan hal berikut:
Kemudian paket diinstal di Linux Ubuntu 14.04.
sumber
Perintah berikut harus memperbaiki masalah izin:
Anda dapat membaca tentang solusi lain yang direkomendasikan secara resmi di sini:
https://docs.npmjs.com/getting-started/fixing-npm-permissions
sumber
Solusi saya:
dalam kasus saya adalah:
Tapi saya mendapatkan masalah yang sama, akhirnya setelah itu
itu berhasil!
sumber
Saya memiliki masalah yang sama dan mencoba untuk memperbaiki izin / kepemilikan file dan direktori terkait npm selama berjam-jam tetapi tidak beruntung dengan itu.
Tiba-tiba saya menemukan bahwa saya memiliki
~/.npmrc
file dengancache
entri yang menunjuk ke direktori yang tidak ada. Dihapuscache
properti itu untuk menggunakan lokasi cache default dan sekarang sudah dipecahkan.sumber
Penolakan
Saya adalah pengguna Windows . Namun, tim saya dan saya telah menemukan sejumlah masalah tentang kesalahan instalasi npm.
Masalah
Berikut ini adalah daftar pelajaran yang bisa diambil dan kemungkinan solusi radikal yang selalu menyelamatkan kami:
Aktifkan npm log untuk mendapatkan wawasan lebih lanjut tentang kemungkinan masalah dengan:
npm install --loglevel verbose
Radikal
Instal rimraf secara global
Jalankan rimraf di node_modules :
Kemudian coba jalankan:
Peringatan!
Atau kekurangan di sana. Berhati-hatilah dengan apa yang mengikuti perintah
rimraf
. Tidak ada peringatan, tidak ada permintaan, tidak ada apa-apa. Itu hanya menghapus direktori dari fase bumi bersih, seolah-olah itu tidak pernah ada. Cobalah dengan risiko Anda sendiri.sumber