Saya menjadi lebih berhati-hati daripada biasanya karena saya bingung dengan perilaku npm
di masa lalu.
Saya menggunakan Mac dan telah menginstal node.js melalui brew install node
.
Sekarang saya ingin menjalankan jslint.js
pada command-line sebagai perintah jslint
saya menemukan bahwa cara kanonik untuk mencapai ini adalah sudo npm install -g jslint
yang dijalankan dengan sukses dengan output ini:
$ sudo npm install -g jslint
npm http GET https://registry.npmjs.org/jslint
npm http 200 https://registry.npmjs.org/jslint
npm http GET https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http 200 https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http GET https://registry.npmjs.org/nopt
npm http 200 https://registry.npmjs.org/nopt
npm http GET https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http 200 https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http GET https://registry.npmjs.org/abbrev
npm http 200 https://registry.npmjs.org/abbrev
npm http GET https://registry.npmjs.org/abbrev/-/abbrev-l.0.4.tgz
npm http 200 https://registry.npmjs.org/abbrev/-/abbrev-1.0.4.tgz
/usr/local/share/npm/bin/jslint -> /usr/local/share/npm/lib/node_modules/jslint/
bin/jslint.js
jslint@0.1.9 /usr/local/share/npm/lib/node_modules/jslint
└── nopt@1.0.10 (abbrev@1.0.4)
Kemudian
$ jslint ply.js
zsh: command not found: jslint
karena /usr/local/share/npm/bin
tidak ada di saya $PATH
.
1) Mengapa brew
tidak menginstal global npm
bin
path to path? Mungkin memang begitu, tetapi sesuatu zsh
memang mengacaukannya. Di mana saya bisa menemukan itu?
2) Haruskah saya melakukan ini? (Tambahkan :/usr/local/share/npm/bin
ke yang diekspor $PATH
di bagian bawah saya ~/.zshrc
)
Sepertinya ini bukan cara yang tepat untuk melakukannya karena jika saya menginstal sesuatu yang lain nanti (menggunakan Homebrew atau sesuatu) saya akan perlu menambahkannya ke skrip startup zsh saya untuk mengatur path. Saya kira dalam contoh khusus ini hanya masalah npm install -g
tidak membuat symlink yang tepat di lokasi yang "tepat" (seperti /usr/local/bin
mungkin).
Saya pikir apa yang akan saya lakukan adalah membangun symlink secara manual /usr/local/bin
untuk setiap program yang bermasalah dengan saya dan itu harus cukup baik untuk tujuan saya.
EDIT : Saya memperbarui ini pada 2019, karena pertanyaan lama ini populer tetapi sekarang sudah usang baik dalam hal alur kerja pribadi saya dan juga dalam hal cara terbaik menginstal node dan mengelola berbagai dependensinya.
Alur kerja pribadi saya sekarang adalah menggunakan installer yang diperoleh dari nodejs.org untuk menginstal node pada sistem. Saya benar-benar percaya ini lebih dari paket homebrew itu sendiri, karena ia tahu yang terbaik bagaimana mengelola file. Jika Anda ingin mengubah simpul sistem Anda dari 8.10 menjadi 10.15, baik di Mac atau Windows, cukup unduh penginstal dari nodejs.org untuk 10.15 untuk OS Anda. Mencoba untuk memutakhirkan simpul yang diinstal melalui homebrew selalu terbukti menjadi pendekatan yang lebih sulit dalam pengalaman saya.
Juga, hal terbesar untuk ditunjukkan adalah bahwa penggunaan sudo seperti yang ditunjukkan pada instalasi ns saya dari jslint contoh di atas sangat tidak disarankan; Saya cukup yakin bahwa paket-paket homebrew tidak boleh diinstal atau berinteraksi dengan cara apa pun menggunakan superuser. Seharusnya tidak perlu, dan akan menyebabkan sakit kepala izin izin!
Selanjutnya saya merekomendasikan ESLint lebih dari jslint, dan belum pernah menggunakan jslint selama bertahun-tahun.
Jawaban:
Memperpanjang Anda
PATH
dengan:bukan ide yang buruk. Karena itu, Anda tidak harus melakukannya.
Jalankan ini:
Default pada OS X adalah
/usr/local
, yang berarti bahwa npm akan menyinkronkan binari/usr/local/bin
, yang seharusnya sudah ada pada AndaPATH
(terutama jika Anda menggunakan Homebrew).Begitu:
npm config set prefix /usr/local
jika itu sesuatu yang lain, dansudo
dengan npm! Menurut dokumen jslint , Anda seharusnya bisa melakukannyanpm install
.Jika Anda menginstal npm sebagai sudo (
sudo brew install
), coba instal ulang dengan polos ol 'brew install
. Homebrew seharusnya membantu Anda tetapsudo
bebas.sumber
npm
menolak untuk menginstaljslint
secara global.npm install -g jslint
gagalError: EACCES, open '/Users/user/.npm/564fcf84-jslint.lock'
chown
/usr/local
jika saya memiliki skrip untuk menulis tautan ke dalamnya tanpa memerlukansudo
? Bagaimana dengan mengikuti ini untuk mengatur nom / node~/.local
atau sesuatu?root
di saya~/
dir (olehsudo rm -r
padatmp/
dan.npm/
) dan kemudian sebuahnpm install -g jslint
bekerja dengan indah. Sangat rapi bahwa npm itu sendiri adalah program simpul dan sedikit bukti konsep JS baris untuk saya yang mulai saya hargai sekarang karena saya memahaminya sedikit lebih baik.chown
-ing/usr/local
dan semua yang ada di dalamnya adalah praktik standar pada OS X. Lihat halaman pemecahan masalah pada wiki Homebrew.chown
ing dari/usr/local
telah terjadi pada mesin saya dinyatakannpm
et al berjalan tanpasudo
tidak akan mampu untuk deposit link ke/usr/local/bin/
dllMenghabiskan waktu untuk masalah ini, dan tombol PATH tidak membantu. Masalah saya adalah bug Homebrew / node / npm yang ditemukan di sini - https://github.com/npm/npm/issues/3794
Jika Anda sudah menginstal simpul menggunakan Homebrew, coba **** Perhatikan per komentar bahwa ini mungkin tidak aman. Itu bekerja untuk saya tetapi bisa memiliki konsekuensi yang tidak diinginkan. Tampaknya juga versi terbaru Homebrew menginstal npm dengan benar. Jadi kemungkinan besar saya akan mencoba
brew update
,brew doctor
,brew upgrade node
dll sebelum mencoba ****:Atau, jika Anda ingin menginstal node dengan Homebrew dan mengaktifkan npm, gunakan:
sumber
Saya menggunakan minuman dan awalan sudah diatur menjadi:
Saya memang memperhatikan bahwa folder bin dan lib dimiliki oleh root, yang mencegah instalasi non sudo yang biasa, jadi saya memilikinya kembali kepada pengguna
Lalu saya baru saja menambahkan path ke .bash_profile saya yang terletak di / Users / [user]
sumber
brew seharusnya tidak mengharuskan Anda menggunakan sudo bahkan ketika menjalankan npm dengan -g. Ini sebenarnya dapat menciptakan lebih banyak masalah di jalan.
Biasanya, pembuatan bir atau port memungkinkan Anda memperbarui jalur Anda sehingga tidak berisiko mengacaukan .zshrc, .bashrc, .cshrc, atau citarasa cangkang apa pun yang Anda gunakan.
sumber
sudo
. Saya menggunakan sudo padanpm
(karena sesuatu yang saya baca menyuruh saya). Saya ingin tahu di mana harus mencari cara mengatur jalur. Sebenarnya sepertinyazsh
installer menjalankan sesuatu yang berakhir dengan hardcoding jalan (pada saat instalasizsh
) ke.zshrc
mana saya tidak begitu sukanpm
harus diinstal dalam/usr/local
. The/usr
path namespace dicadangkan untuk paket resmi distro Anda./usr/local/bin
di $ PATH Anda atau tidak, adalah masalah zsh.Saya berhasil memperbaiki kesalahan perintah Vue Cli dengan melakukan hal berikut:
sudo nano ~/.bash_profile
untuk mengedit profil bash Anda.export PATH=$PATH:/Users/[your username]/.npm-packages/bin
vue create my-project
danvue --version
lain - lain.Saya melakukan ini setelah saya menginstal Vue Cli terbaru dari https://cli.vuejs.org/
Saya biasanya menggunakan benang, tetapi saya menginstal ini secara global dengan npm
npm install -g @vue/cli
. Anda juga bisa menggunakan benang jika mauyarn global add @vue/cli
Catatan: Anda mungkin harus menghapus instalannya terlebih dahulu secara global jika Anda telah menginstalnya:
npm uninstall -g vue-cli
Semoga ini membantu!
sumber
Adakah yang mendapat masalah yang sama terkait dengan konflik antara brew dan npm Silakan periksa solusi ini https://gist.github.com/DanHerbert/9520689
sumber
Coba jalankan:
dan kemudian lakukan tes dengan menjalankan
express
di baris perintah. Ini berhasil untuk saya.sumber
~/.npm/bin
atau semacamnya. seharusnya tidak adanpm
dir yang ditambahkan ke dir rumah Anda.Jika Anda telah menautkan paket simpul menggunakan perintah sudo
Lalu pergi ke folder tempat node_modules diinstal secara global.
Pada sistem Unix mereka biasanya ditempatkan di / usr / local / lib / node atau / usr / local / lib / node_modules ketika diinstal secara global. Jika Anda mengatur variabel lingkungan NODE_PATH ke jalur ini, modul dapat ditemukan oleh node.
Windows XP -% USERPROFILE% \ Data Aplikasi \ npm \ node_modules Windows 7 -% AppData% \ npm \ node_modules
dan kemudian jalankan perintah
Ini akan memberikan daftar semua node_modules global dan Anda dapat dengan mudah melihat modul simpul yang ditautkan.
sumber
sudo brew tidak lagi menjadi pilihan jadi jika Anda menginstal dengan brew pada saat ini Anda akan mendapatkan 2 hal yang benar-benar menjengkelkan: A: suka menginstal ke dalam
/usr/local/opts
atau sesuai dengan ini, / usr / local / shared. Ini bukan masalah besar pada awalnya tetapi saya punya masalah dengan PATH simpul terutama ketika saya menginstal serat. B: Anda agak terjebak dengan perintah sudo sampai Anda menghapus dan menginstalnya dengan cara ini atau Anda bisa mendapatkan tumpukan dari BitnamiSaya merekomendasikan metode ini di atas opsi tumpukan karena siap digunakan jika Anda memiliki banyak proyek. Jika Anda menggunakan stack MEAN premade, Anda harus mengatur host virtual di httpd.conf (lebih merepotkan dari stack ini daripada XAMPP). Lakukan pembaruan seperti biasa pada extra / vhosts.conf Anda dan / etc / hosts untuk setiap tambahan proyek, kecuali jika Anda ingin repoint dan me-restart server Anda ketika Anda selesai memperbarui hal-hal.
sumber
Solusi sederhana adalah ...
Masukkan saja perintah di bawah ini:
sudo npm config get prefix
jika bukan sesuatu seperti ini
/usr/local
, maka Anda perlu memperbaikinya menggunakan perintah di bawah ini.sudo npm config set prefix /usr/local
...Sekarang 100% berfungsi dengan baik
sumber