Saya baru saja mulai belajar tentang Express 4.0 di aplikasi Node.js saya, dan saya menemukan bahwa itu menghasilkan ./bin/www
file, di mana hanya server aplikasi dan pengaturan port yang ditulis dan semua yang lain seperti middleware dan routing didefinisikan dalam ./app.js
file.
Namun, saya tidak yakin apa ini ./bin/www
. Saya telah menggunakan Express 3.x dan saya selalu mendefinisikan pengaturan server dan port serta perutean dan middleware pada ./app.js
file yang sama , dan meluncurkan aplikasi node saya node app.js
. Jadi apa gunanya menggunakan ./bin/www
? Apakah hanya memisahkan definisi port dan server dari yang lain?
Saat ini, ketika saya membuat paket menggunakan express-generator, package.json
termasuk definisi berikut:
"scripts": {
"start": "node ./bin/www"
}
Namun, saya bertanya-tanya apakah saya harus meluncurkan aplikasi saya menggunakan node ./bin/www
, atau npm start
. Perintah mana yang harus saya jalankan untuk memulai aplikasi saya?
Dan juga, ketika saya menyebarkan aplikasi saya ke heroku, apa yang harus saya tulis di Procfile
file? Apakah web: node app.js
cukup?
sumber
Jawaban:
Di Express 3.0 , Anda biasanya akan menggunakan
app.configure()
(atauapp.use()
) untuk mengatur middleware yang Anda butuhkan. Perangkat middleware yang Anda tentukan digabungkan bersama dengan Express 3.0.Contoh:
Namun, dalam Express 4.0 , semua middleware telah dihapus sehingga mereka dapat dipertahankan dan diperbarui secara independen dari Core Express (kecuali middleware statis), sehingga mereka perlu dipanggil secara terpisah (apa yang Anda lihat
app.js
).The
bin/
direktori berfungsi sebagai lokasi di mana Anda dapat menentukan berbagai Anda skrip startup . Iniwww
adalah contoh untuk memulai aplikasi ekspres sebagai server web.Pada akhirnya, Anda bisa memiliki skrip yang berbeda seperti
test
,,stop
ataurestart
, dll. Memiliki struktur ini memungkinkan Anda untuk memiliki konfigurasi startup yang berbeda, tanpa menjejalkan semuanya menjadiapp.js
.Cara yang benar untuk memulai aplikasi Express Anda adalah:
Untuk menggunakan aplikasi Express 4.x ke Heroku , tambahkan ini ke
Procfile
:Atau jika Anda bisa menggunakan skrip start di skrip Anda
package.json
, heroku akan secara otomatis menggunakannya, baca lebih lanjut di sinisumber
www
. Saya tidak yakin mengapa namanya seperti itu - mungkin dinamai menurut World Wide Web?Aplikasi Node seperti Express 3.x menggunakan file startup non-standar
app.js
, tapi itu file yang salah untuk dijalankan.package.json
telahyang menyatakan baris perintah startup. Itu tidak sepele karena itu berpotensi berisi baris perintah penuh, dan bukan hanya path ke file starter.
sumber
Jika Anda menggunakan generator express, lihat saja file lokal Anda
./bin
, terdapatwww
file di dalam file ./bin. Jadi ketika Anda menjalankannode ./bin/www
, node.js akan mengeksekusi kode padawww
file. Tidak ada yang mewah.sumber
Di Windows, gunakan perintah ini:
sumber
Semua jawaban di atas telah menjawab dengan baik. Tetapi jika Anda ingin menggunakan
node app.js
hanya seperti versi Express 3. *. Anda dapat mengikuti di bawah ini:Karena file app.js yang dihasilkan oleh generator Express 4 sekarang menjadi modul Node.js , file itu tidak lagi dapat dimulai secara independen sebagai aplikasi (kecuali jika Anda memodifikasi kodenya). Modul harus dimuat dalam file Node.js dan dimulai melalui file Node.js. File Node.js adalah ./bin/www dalam kasus ini. Untuk info lebih lanjut, kunjungi dokumentasi resmi .
Baik direktori bin maupun file www tanpa ekstensi wajib untuk membuat aplikasi Express atau memulai aplikasi. Itu hanya saran yang dibuat oleh generator, jadi silakan memodifikasinya sesuai dengan kebutuhan Anda.
Untuk menyingkirkan direktori www dan menjaga hal-hal sebagai "Express 3 way", hapus baris yang mengatakan module.exports = app; di akhir file app.js, lalu tempel kode berikut ini sebagai gantinya:
Berikutnya, perubahan
"start": "node ./bin/www"
dalam package.json berkas. Karena, Anda sekarang telah memindahkan fungsi ./bin/www kembali ke app.js. Sekarang, mulai gunakan"start": "node app.js"
untuk menjalankan aplikasi ekspres Anda.sumber
taruh ini ke Procfile
web: node ./bin/www
dan periksa apakah itu berfungsiforeman start
. Aplikasi harus tersedia di port 5000sumber