Saya mencoba mengatur Node di Mac OSX Lion. Semuanya sepertinya berfungsi dengan baik, tetapi sepertinya saya tidak dapat mengimpor modul apa pun dari folder modul global saya. Saya mendapatkan kesalahan,
Error: Cannot find module <module>
Jika saya menjalankan ini node -e require.paths
:, respons yang saya dapatkan adalah:
[ '/usr/local/lib/node_modules',
'/Users/Me/.node_modules',
'/Users/Me/.node_libraries',
'/usr/local/Cellar/node/0.4.12/lib/node' ]
Yang benar, modul saya memang diinstal di / usr / local / lib / node_modules. Ketika saya mencoba dan menjalankan skrip, saya mendapatkan ini:
Error: Cannot find module 'socket.io'
at Function._resolveFilename (module.js:326:11)
at Function._load (module.js:271:25)
at require (module.js:355:19)
at Object.<anonymous> (/Users/Me/node/server.js:2:10)
at Module._compile (module.js:411:26)
at Object..js (module.js:417:10)
at Module.load (module.js:343:31)
at Function._load (module.js:302:12)
at Array.<anonymous> (module.js:430:10)
at EventEmitter._tickCallback (node.js:126:26)
.Bash_profile saya terlihat seperti ini:
export PATH=/usr/local/mysql/bin:$PATH
export NODE_PATH=/usr/local/lib/node_modules
export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/usr/local/mysql/lib/"
Sangat menghargai bantuan, saya tidak tahu mengapa saya tidak bisa mengimpor perpustakaan.
npm link
) dapat ditemukan di sini: stackoverflow.com/a/15646750/2671392Jawaban:
Jika Anda menggunakan npm> = 1.0, Anda dapat menggunakan
npm link <global-package>
untuk membuat tautan lokal ke paket yang sudah diinstal secara global. ( Peringatan: OS harus mendukung symlink. )Namun, ini tidak datang tanpa masalah.
Sebagai alternatif, Anda dapat menginstal paket secara lokal maupun global.
Untuk informasi tambahan, lihat
sumber
npm
cache (yang tinggal di~/.npm
) akan membuat proses instalasi ulang dilakukan di lokasi Anda yang berbeda.Node.js menggunakan variabel lingkungan
NODE_PATH
untuk memungkinkan menentukan direktori tambahan untuk dimasukkan dalam jalur pencarian modul. Anda dapat menggunakannpm
dirinya sendiri untuk memberi tahu Anda di mana modul global disimpan dengannpm root -g
perintah. Jadi dengan menyatukan keduanya, Anda dapat memastikan modul global dimasukkan dalam jalur pencarian Anda dengan perintah berikut (di Linux-ish)export NODE_PATH=$(npm root --quiet -g)
sumber
NODE_PATH
petunjuk variabel lingkungan. Itu banyak membantu!NODE_PATH
ke jalur posix yang setara untuk membuat npm bekerja pada MSYS2. Terima kasih..node_modules
folder Anda dapat dicari, tetapi untuk mengimpor modul menggunakanrequire()
, mereka harus tetap diinstal di direktori proyek lokal Anda (atau sebagai alternatif, ditautkan menggunakannpm link
). Modul global tidak dapat diimpor dalam proyek, hanya binari / skrip yang dapat dijalankan dari sana.Anda dapat menggunakan tautan npm untuk membuat tautan simbolis ke paket global Anda di folder proyek Anda.
Contoh:
Yang dilakukan adalah membuat folder node_modules lokal dan kemudian membuat symlink express -> [direktori global] / node_modules / express yang kemudian dapat diselesaikan dengan
require('express')
sumber
Instal paket apa pun secara global seperti di bawah ini:
Karena modul pengganti ini dipasang secara global, maka jika Anda melihat folder modul simpul Anda, Anda tidak akan melihat modul pengganti di sana dan jadi Anda tidak dapat menggunakan paket ini menggunakan memerlukan ('ganti').
karena dengan mengharuskan Anda dapat menggunakan hanya modul lokal yang ada di folder modul simpul Anda.
Sekarang untuk menggunakan modul global Anda harus menautkannya dengan jalur modul simpul menggunakan perintah di bawah ini.
Sekarang kembali dan lihat folder modul simpul Anda, Anda sekarang dapat melihat ganti modul di sana dan dapat menggunakannya dengan memerlukan ('ganti') di aplikasi Anda karena terhubung dengan modul simpul lokal Anda.
Tolong beri tahu saya jika diperlukan klarifikasi lebih lanjut.
sumber
Anda dapat menggunakan persyaratan dengan jalur ke direktori modul global sebagai argumen.
Di mac saya, saya menggunakan ini:
Bagaimana menemukan di mana modul global Anda berada? -> Di mana npm menginstal paket?
sumber
Mengatur variabel lingkungan NODE_PATH untuk menunjuk ke
node_modules
folder global Anda .Di Windows 7 atau lebih tinggi pathnya adalah sesuatu seperti
%AppData%\npm\node_modules
sementara di UNIX bisa jadi seperti/home/sg/.npm_global/lib/node_modules/
tetapi tergantung pada konfigurasi pengguna.Perintah
npm config get prefix
dapat membantu menemukan jalan mana yang benar.Dalam sistem UNIX Anda dapat mencapainya dengan perintah berikut:
sumber
Saya menggunakan Docker. Saya mencoba membuat gambar buruh pelabuhan yang memiliki semua dependensi simpul saya diinstal, tetapi dapat menggunakan direktori aplikasi lokal saya pada waktu menjalankan wadah (tanpa mencemari itu dengan direktori atau tautan node_modules). Ini menyebabkan masalah dalam skenario ini. Solusi saya adalah meminta dari jalur yang tepat di mana modul, misalnya memerlukan ('/ usr / local / lib / node_modules / socket.io')
sumber
require.paths
sudah ditinggalkan.Buka folder proyek Anda dan ketik
yang harus menginstalnya di folder ./node_modules lokal tempat simpul akan mencarinya.
Saya menyimpan barang-barang saya seperti ini:
Buat file app.js
sekarang jalankan aplikasi saya
Pastikan Anda menggunakan
npm >= 1.0
dannode >= 4.0
.sumber