npm install error dengan Error: ENOENT, chmod


128

Saya mencoba menginstal secara global modul npm yang baru saja saya terbitkan. Setiap kali saya mencoba menginstal, baik dari npm atau folder, saya mendapatkan kesalahan ini.

npm ERR! Error: ENOENT, chmod '/usr/local/lib/node_modules/takeapeek/lib/cmd.js'
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>

npm ERR! System Linux 3.8.0-19-generic
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "takeapeek"
npm ERR! cwd /home/giodamlio
npm ERR! node -v v0.10.6
npm ERR! npm -v 1.3.6
npm ERR! path /usr/local/lib/node_modules/takeapeek/lib/cmd.js
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/giodamlio/npm-debug.log
npm ERR! not ok code 0

Saya menggunakan sudo dan saya telah memeriksa tiga kali semua dalam paket semuanya harus berfungsi. Saya melakukan beberapa pencarian, dan melihat beberapa kasus serupa yang tidak ada satupun yang telah diselesaikan. Inilah yang saya coba.

  • Tingkatkan npm ( sudo npm install -g npm)
  • Kosongkan cache npm global ( sudo npm cache clear)
  • Kosongkan cache npm pengguna ( npm cache clear)

Saya perhatikan bahwa kesalahan berkaitan dengan file yang saya tautkan ke jalur, khususnya ketika npm mencoba melakukan chmod. Itu seharusnya tidak menjadi masalah, saya lib/cli.jsmemiliki izin normal, dan npm memiliki izin pengguna super selama penginstalan ini.

Setelah menggali dokumen npm saya menemukan opsi yang akan menghentikan npm membuat tautan bin ( --no-bin-links), ketika saya mencoba menginstal dengannya, itu berfungsi dengan baik.

Jadi apa masalahnya? Apakah ini bug kasus pinggiran aneh yang belum ada solusinya?

Edit: Untuk referensi, berikut adalah modul yang saya unggah


apakah paket Anda menggunakan node-gyp? Saya pikir panggilan no-bin-links terkait jika demikian.
jcollum

Tidak, tidak ada kode asli dalam modul. Berikut adalah sumber modul untuk referensi.
giodamelio

1
The --no-bin-linkshanya berhenti NPM dari symlinking file dalam package.json ini binhash ke jalan di install global.
giodamelio

Argh, aku pasti pernah mengalami ini sebelumnya, tapi aku tidak ingat mengapa ... akan memberitahumu jika itu muncul di kepalaku.
jcollum

@jcollum Terima kasih, ini benar-benar cukup membuat frustrasi, saya telah memeriksa semuanya jutaan kali, tetapi saya masih tidak dapat menahan perasaan saya telah melewatkan sesuatu yang sederhana dan bodoh. Itu atau mungkin itu serangga aneh.
giodamelio

Jawaban:


133

Ok, sepertinya NPM menggunakan Anda .gitignoresebagai basis untuk .npmignorefile tersebut, dan dengan demikian mengabaikan /lib. Jika Anda menambahkan .npmignorefile kosong ke root aplikasi Anda, semuanya akan berfungsi.

[edit] - info lebih lanjut tentang perilaku ini di sini: https://docs.npmjs.com/misc/developers#keeping-files-out-of-your-package


Sial, pasti itu. Itu sepertinya cara yang membingungkan dalam melakukan sesuatu. Bukan di komputer sekarang, tapi saya akan mencobanya dalam beberapa jam.
giodamelio

3
Rasa frustrasi selama 3 jam muncul karena satu baris dalam .gitignore saya yang membuat npm install -g. Gila.
Bryan

2
'ketik NUL> .npmignore' untuk windows
Kabir

1
Mulai npm @ 5, pemulihan otomatis npm cache dari masalah korupsi dan data yang diekstrak dari cache dijamin valid. Jika Anda ingin memastikan semuanya konsisten, gunakan 'verifikasi cache npm' sebagai gantinya.
Abhijeet

1
hapus file package-lock.json
FennRussel

107

Saya mengalami masalah serupa,

npm cache clean

menyelesaikannya.


11
Saya mencoba npm cache verifydan berhasil. terima kasih atas petunjuknya.
Jaikrat

Mulai npm @ 5, pemulihan otomatis npm cache dari masalah korupsi dan data yang diekstrak dari cache dijamin valid. Jika Anda ingin memastikan semuanya konsisten, gunakan 'verifikasi cache npm' sebagai gantinya. Di sisi lain, jika Anda men-debug masalah dengan penginstal, Anda dapat menggunakan npm install --cache /tmp/empty-cacheuntuk menggunakan cache sementara alih-alih menggunakan yang sebenarnya.
Daniel ZA

9

Masalah ini entah bagaimana muncul pada saya di Mac ketika saya mencoba menjalankannya npm install -g bower. Itu memberi saya sejumlah kesalahan karena tidak dapat menemukan hal-hal seperti anggun-fs. Saya tidak yakin bagaimana saya menginstal npm awalnya, tetapi sepertinya mungkin itu turun dengan node menggunakan homebrew. Saya pertama kali lari

brew uninstall node

Ini menghapus keduanya nodedan npmdari jalanku. Dari sana saya baru saja menginstalnya kembali

brew install node

Ketika itu selesai saya sudah nodedan npmdi jalur saya dan saya bisa berlari

rm -rf ~/.npm
npm install -g bower

Ini kemudian memasang bower dengan sukses.

Memperbarui formula minuman dan memutakhirkan pemasangan tampaknya tidak berhasil untuk saya, saya tidak yakin mengapa. Penghapusan .npmfolder adalah sesuatu yang berhasil untuk orang lain, dan saya telah mencobanya tanpa hasil. Saya melakukannya kali ini untuk berjaga-jaga. Perhatikan juga bahwa tidak satu pun dari berikut ini yang memecahkan masalah untuk saya, meskipun hal itu berhasil untuk orang lain:

npm cache clean
sudo npm cache clean

9

Saya mendapatkan kesalahan ini pada npm install dan menambahkan .npmignore tidak menyelesaikannya.

Kesalahan: ENOENT, stat 'C: \ Users \ My-UserName \ AppData \ Roaming \ npm'

Saya mencoba membuka folder yang disebutkan dan itu tidak ada. Kesalahan diperbaiki ketika saya membuat folder npm di folder Roaming .

Ini di Windows 8.1


4

Saya memiliki masalah yang sama, dan baru saja menemukan penanganan yang tidak disebutkan di sini. Meskipun saya berkontribusi pada komunitas:

npm install -g myapptidak menyalin bindirektori. Saya menemukan ini karena saya tidak memasukkannya ke filesdalam sayapackage.json

"files": [
  "lib",
  "bin" // this was missing
]

Punya masalah yang sama dan jawaban ini adalah satu-satunya perbaikan yang baik untuk saya. Alasannya adalah saya mendapatkan fileskunci saya package.jsondengan beberapa entri seperti index.jsdan LICENSE, tetapi tidak binfoldernya. Jadi berfungsi jika tidak ada fileskunci sama sekali, atau jika ada fileskunci DAN binfolder ke dalamnya .
Rémi Becheras

Terima kasih, ini membantu saya melepaskan diri. Setelah Anda menunjukkan bahwa direktori bin tidak termasuk dalam file, saya pikir "oh! Tentu saja!". Kemudian saya kembali ke dokumen untuk melihat apakah saya melewatkannya dan tidak disebutkan (setidaknya tidak di posting blog npm yang saya baca). Setidaknya saya tidak gila: P. Terima kasih untuk bantuannya!
Chris Schmitz

4

Saya mendapatkan kesalahan serupa pada npm installinstalasi lokal:

npm ERR! enoent ENOENT: no such file or directory, stat '[path/to/local/installation]/node_modules/grunt-contrib-jst'

Saya tidak yakin apa yang menyebabkan kesalahan, tetapi saya baru-baru ini memasang beberapa modul node baru secara lokal, meningkatkan node dengan homebrew, dan menjalankan 'npm update -g'.

Satu-satunya cara saya dapat menyelesaikan masalah ini adalah dengan menghapus direktori node_modules lokal sepenuhnya dan menjalankannya npm installlagi:

cd [path/to/local/installation]
npm rm -rdf node_modules
npm install

4

Saya memiliki masalah serupa secara khusus: ERR! ENOent ENOENT: tidak ada file atau direktori seperti itu, chmod 'node_modules / npm / node_modules / request / node_modules / http-signature / node_modules / sshpk / bin / sshpk-conv Saya mencoba semua solusi di atas tetapi tidak berhasil. Saya menggunakan kotak gelandangan, dan proyek itu ada di folder bersama. Masalahnya sepertinya hanya ada di sana, ketika saya memindahkan proyek ke folder lain yang tidak dibagikan (woth host), voila! masalah terpecahkan. Untuk berjaga-jaga orang lain juga menggunakan gelandangan


Anda membangunkan saya dari mimpi buruk, tnx! Saya memiliki 2 tambahan: 1.) Berhenti menggunakan npm, gunakan Benang. 2.) Jalankan npm dari mesin HOST Anda dan bukan VM.
Flip Vernooij

3

Saya mendapat pesan kesalahan serupa saat mencoba npm installsekelompok dependensi. Ternyata beberapa dari mereka gagal diinstal di Debian / Ubuntu karena mereka berharap /usr/bin/nodemenjadi node yang dapat dieksekusi. Untuk memperbaikinya, Anda perlu melakukan

sudo ln -s nodejs /usr/bin/node 

atau lebih baik lagi,

sudo apt-get install nodejs-legacy

Untuk info lebih lanjut: https://stackoverflow.com/a/21171188/7581


3

Saya mengalami perilaku serupa setelah meningkatkan ke npm 6.1.0. Tampaknya berfungsi sekali, tetapi kemudian saya mengalami kesalahan ini ketika mencoba menginstal paket yang ditentukan oleh jalur pada sistem file:

npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall rename

Hal-hal berikut tidak menyelesaikan masalah :

  • rm -rf node_modules
  • npm cache clean(memberi npm ERR! As of npm@5, the npm cache self-heals.... use 'npm cache verify' instead.)
  • npm cache verify
  • rm -rf ~/.npm

Bagaimana saya memperbaiki masalah :

  • rm package-lock.json

2

Saya pikir skrip kopi terkompilasi Anda hilang dari paket npm yang diterbitkan. Coba tulis perintah prapublikasi .


Tidak, folder lib ada di sana saat saya menerbitkannya. Selain itu, saya mendapatkan kesalahan yang sama ketika saya mencoba menginstal dari folder lokal. Bahkan ketika folder lib ada di sana.
giodamelio

1
@giodamelio Saya setuju dengan ryan yang satu ini. Kesalahan mengatakan takeapeek/lib/cmd.jstidak ada. Meskipun folder lib mungkin ada 'di sana' saat Anda menerbitkan, itu tidak akan ada 'di sana' saat Anda menginstal melalui npm kecuali itu bagian dari repositori, atau kecuali Anda menggunakan prepublish untuk membuatnya.
badsyntax

2

Dalam kasus saya (beberapa kode ENOENT errno 34) masalah adalah dengan ~/.npm/akses direktori. Di dalamnya ada beberapa subdir yang memiliki root:roothak, yang menyebabkan masalah saat saya menjalankan perintah sebagai pengguna biasa (tanpa sudo). Jadi saya mengubah kepemilikan semua subdir dan file di dalam ~/.npm/dir menjadi pengguna dan grup lokal saya. Itu melakukan trik di Ubuntu saya (di Mac seharusnya juga berfungsi).

$ sudo chown yourusername.yourgroupname ~/.npm/ -R

Anda harus tahu nama pengguna Anda, bukan? Jika tidak, jalankan $ whoamidan gantikan nama grup Anda dengan itu juga, seperti ini:

$ sudo chown johnb.johnb ~/.npm/ -R

EDIT:

Kasus uji :

Dari akun lokal saya, /home/johnbsaya menginstal secara global beberapa generator yeoman, seperti ini:

$ sudo npm install -g generator-laravel

Sifat masalah :

Tindakan di atas menyebabkan beberapa dependensi diinstal di dalam ~/.npm/dir, memiliki root:rootkepemilikan (karena sudo ...). Ternyata npm tidak berjalan sebagai pengguna lokal (atau mengubah kepemilikan subdirektori dependensi sesudahnya) saat menarik dependensi dan menuliskannya ke subdir pengguna lokal ~/.npm/. Selama npm akan sangat ceroboh terhadap masalah keamanan sistem file unix yang mendasar, masalah akan terulang kembali.

Solusi :

  1. Periksa secara terus menerus apakah ~/.npm/berisi subdirektori dengan kepemilikan (dan / atau izin) selain akun pengguna lokal Anda, terutama saat Anda menginstal atau memperbarui sesuatu dengan sodo(root). Jika demikian, ubah kepemilikan di dalam ~/.npm/menjadi pengguna lokal secara rekursif.

  2. Tanyakan kepada npm, bower, grunt, ...komunitas apakah mereka menangani masalah ini seperti yang saya jelaskan di atas.


2

Saya mendapat kesalahan ini saat mencoba menginstal plugin grunt. saya menemukan saya memiliki versi npm yang kedaluwarsa dan kesalahannya hilang setelah memperbarui npm ke versi terbaru

npm install -g npm

1

Saya mencoba semua hal yang saya temukan di internet ( npm cache cleardan rm -rf ~/.npm), tetapi sepertinya tidak ada yang berhasil. Apa yang memecahkan masalah ini adalah memperbarui node (dan npm) ke versi terbaru. Coba itu.


1

Di Windows saya mengalami kesalahan serupa. Cari, tempel Data Aplikasi, dan cari stringnya npm.

Saya mengganti string 'npm'(termasuk tanda kutip) dengan 'npm.cmd'di atlasboard\lib\package-dependency-manager.jsdan atlasboard\lib\cli\commands.js. Itu memperbaiki masalah.


1

Kesalahan yang sama selama instalasi global ( npm install -g mymodule) untuk paket dengan skrip yang tidak ada.

Di package.json:

    ...
    "bin": {
      "module": "./bin/module"
    },
    ...

Tapi ./bin/moduletidak ada, seperti namanya modulejs.



1

Anda bisa mendapatkan kesalahan ini jika node.js Anda juga rusak. Saya memperbaiki kesalahan ini dengan uninstall / restart / install node.js sepenuhnya dan itu memperbaiki kesalahan ini, bersama dengan tiga kesalahan misterius lainnya yang terjadi.


1

Hati-hati dengan nilai kunci "direktori" dan "file" di package.json yang tidak valid

Jika Anda memulai dengan aplikasi baru, dan Anda ingin memulai dengan benar-benar kosong, Anda harus memulai dengan folder kosong lengkap atau memiliki file package.json yang valid di dalamnya.

Jika Anda tidak ingin membuat file package.json terlebih dahulu, ketik saja: npm i some_package

Paket dengan nama "some_package" harus diinstal dengan benar di sub folder baru "node_modules".

Jika Anda membuat file package.json terlebih dahulu, ketik: npm init Pertahankan semua default (hanya dengan mengklik ENTER), Anda akan mendapatkan file yang valid.

Ini akan terlihat seperti ini:

{
  "name": "yourfoldername",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

Perhatikan bahwa kunci berikut hilang: " direktori ", " repositori " dan " file ". Sepertinya jika Anda menggunakan nilai yang salah untuk " direktori " dan / atau " file ", Anda tidak dapat menginstal paket. Meninggalkan kunci ini, memecahkan masalah untuk saya.

Perhatikan juga kunci " utama ". Yang ini ada, tetapi mengandung nilai yang tidak valid. Tidak ada file "index.js" (belum). Anda bisa melepasnya dengan aman.

Sekarang ketik: npm i some_package dan paket dengan nama "some_package" harus diinstal dengan benar di sub folder baru "node_modules".


1

Mencoba hampir semuanya lalu akhirnya ini:

Cukup hapus node_modules lalu jalankan 'npm install'kembali



0

Saya mendapatkan pesan error "Error: ENOENT, stat 'C: \ Users \ userName \ AppData \ Roaming \ npm'. Tapi tidak ada direktori seperti itu. Buat direktori dan npm install mulai bekerja


0

Saya baru saja meningkatkan ke node 4.2.1 pada mesin Windows 7 x64. Saat berlari

npm install -g bower

Saya mendapat kesalahan serupa:

npm ERR! ENOent ENOENT: tidak ada file atau direktori seperti itu, buka 'C: \ Users \ THE_USERNAME \ AppData \ Local \ Temp \ npm-THE_HASH'

Berpikir itu terkait dengan jalur AppData, saya bermain-main dengannya

npm config edit

dan

npm config edit --global

untuk mengubah bidang awalan, cache, dan tmp tetapi menerima kesalahan yang sama dengan jalur baru:

npm ERR! ENOent ENOENT: tidak ada file atau direktori seperti itu, buka 'C: \ Users \ THE_USERNAME \ npm-temp \ npm-THE_HASH'

Semua perintah dijalankan sebagai Administrator, jadi saya memiliki izin penuh.

Kemudian saya pikir ada beberapa masalah dengan file yang ada, jadi saya menjalankan:

npm cache clean

Namun mendapat error yang sama. Namun, masih ada beberapa file sementara yang tergeletak. Menghapus secara manual semua data temp dengan cygwin akhirnya memperbaiki masalah untuk saya:

rm -rf bower bower.cmd node_modules etc

Jika Anda hanya memiliki cmd Windows, Anda dapat menggunakan sesuatu seperti

rmdir /S THE_TEMP_DIR

untuk menghapus semua subdirektori (meskipun jika Anda memiliki dependensi node yang sangat bertingkat, ini sangat bermasalah)

Jadi, mungkin ada beberapa masalah dengan memutakhirkan npm dan memiliki versi bower atau paket lain yang berkeliaran. Dalam kasus saya, tampaknya itulah masalahnya


0

Saat menginstal ionic saya mendapat kesalahan di bawah ini

115648 kesalahan enoent ENOENT: tidak ada file atau direktori seperti itu, ganti nama 'C: \ Users \ UserName \ AppData \ Roaming \ npm \ node_modules.staging \ ansi-b11f0c4b' -> 'C: \ Users \ UserName \ AppData \ Roaming \ npm \ node_modules \ ionic \ node_modules \ cordova-lib \ node_modules \ ansi '

Tidak ada folder yang dipanggil ansidi jalur itu. Saya membuatnya di sana dan dipasang dengan benar.


0

Jika Anda mencoba untuk "membuat instal" di direktori proyek Anda dengan kesalahan ini, Anda dapat mencobanya:

rm -rf ./node_modules
npm cache clear
npm remove sails

lalu Anda dapat mencoba untuk "melakukan pemasangan"

Jika Anda memiliki "npm ERR! Enoent ENOENT: tidak ada file atau direktori seperti itu, chmod '... / djam-backend / node_modules / js-beautify / js / bin / css-beautify.js'" maka Anda dapat mencoba menginstal beberapa versi js-beautify sebelumnya, lebih banyak komentar: https://github.com/beautify-web/js-beautify/issues/1247

"dependencies": {
  ...
  "js-beautify": "1.6.14"
  ...
}

dan jalankan "make install". Tampaknya berfungsi jika Anda tidak memiliki dependensi lain yang membutuhkan versi lebih tinggi (1.7.0) dalam hal ini Anda harus menurunkan versi paket ini juga di packages.json.

atau


0

Semua hal di atas tidak berhasil untuk saya. Tapi yarn installberhasil, lalu npm imulai bekerja. Tidak yakin benang apa yang diperbaiki, tetapi solusi cepat dan mudah!


0

Pertama lakukan

 npm rm -rdf node_modules

lalu lakukan

npm install

Setelah itu instal file apa saja yang ingin Anda tambahkan


0

Memiliki kesalahan serupa dengan npm di kontainer buruh pelabuhan untuk webpack. Masalah ini disebabkan oleh argumen baris perintah --user dari pengoperasian buruh pelabuhan, karena pengguna dan grup yang diberikan di sana entah bagaimana mengacaukan hak pada volume lokal. Semoga ini bisa membantu seseorang :)


-3
Creating a new React app in C:\Users\CM\Downloads\react\github-profile.
Installing packages. This might take a couple of minutes.
Installing react, react-dom, and react-scripts...

npm ERR! path C:\Users\CM\AppData\Roaming\npm-cache_cacache\content- 

v2\sha512\36\c6\c3e97514319bc1c6d40026e58325e782e1016c996b1fa335b1
0893d67f7339e4af62bb688c0da2aaca839d4c9d51e2eb015eec65545008a3cad93d00f806

npm ERR! code EPERM
npm ERR! errno -4048
npm ERR! syscall lstat
npm ERR! Error: EPERM: operation not permitted, lstat 
'C:\Users\CM\AppData\Roaming\npm-cache_cacache\content- 
v2\sha512\36\c6\c3e97514319bc1c6d40026e58325e782e1016c996
b1fa335b10893d67f7339e4af62bb688c0da2aaca839d4c9d51e2eb015eec6
5545008a3cad93d00f806'
npm ERR! { [Error: EPERM: operation not permitted, lstat 
'C:\Users\CM\AppData\Roaming\npm-cache_cacache\content- 
v2\sha512\36\c6\c3e97514319bc1c6d40026e58325e782e1016c996b1f 
a335b10893d67f7339e4af62bb688c0da2aaca839d4c9d51e2eb015eec6554500
8a3cad93d00f806']

npm ERR! cause:
npm ERR! { Error: EPERM: operation not permitted, lstat 
'C:\Users\CM\AppData\Roaming\npm-cache_cacache\content- 
v2\sha512\36\c6\c3e97514319bc1c6d40026e58325e782e1016c996b1
fa335b10893d67f7339e4 
af62bb688c0da2aaca839d4c9d51e2eb015eec65545008a3cad93d00f806'
npm ERR! errno: -4048,
npm ERR! code: 'EPERM',
npm ERR! syscall: 'lstat',
npm ERR! path:
npm ERR! 'C:\Users\CM\AppData\Roaming\npm-cache\_cacache\content- 


npm ERR! stack:
npm ERR! 'Error: EPERM: operation not permitted, lstat 
'C:\Users\CM\AppData\Roaming\npm-cache\_cacache\content- 
v2\sha512\36\c6\c3e97514319bc1c6d40026e58325e782e1016c996
b1fa335b10893d67f7339e4af62bb688c0da2aaca839d4c9d51e2eb015
eec65545008a3cad93d00f806'',
npm ERR! errno: -4048,
npm ERR! code: 'EPERM',
npm ERR! syscall: 'lstat',
npm ERR! path:
npm ERR! 'C:\Users\CM\AppData\Roaming\npm-cache\_cacache\content- 
v2\sha512\36\c6\c3e97514319bc1c6d40026e58325e782e1016c996b1fa335
b10893d67f7339e4af62bb688c0da2aaca839d4c9d51e2eb015eec65545008a3cad93
d00f806',
npm ERR! parent: 'postcss-image-set-function' }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It's possible that the file was already in use (by a
text editor or antivirus),
npm ERR! or that you lack permissions to access it.
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double- 
check thenpm ERR! permissions of the file and its containing directories, or 
try  running

npm ERR! the command again as root/Administrator (though this is not 
recommended).
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\CM\AppData\Roaming\npm-cache_logs\2019-03-22T10_
27_19_722Z-debug.log


Aborting installation.
npm install --save --save-exact --loglevel error react react-dom react- 
scripts   has failed.

Deleting generated file... node_modules
Deleting generated file... package.json
Deleting GitHub-profile/ from C:\Users\CM\Downloads\reactDone.``

saya menghadapi kesalahan yang sama tetapi saya mencoba menjalankan perintah create-react-app berkali-kali dan akhirnya dibuat, ini adalah masalah dengan koneksi internet saya. periksa koneksi internet Anda


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.