Saya sudah melakukan beberapa pencarian. Namun, masih memiliki keraguan tentang parameter utama di package.json dari Node.js.
- Bagaimana mengisi bidang ini bisa membantu? Bertanya dengan cara lain, dapatkah saya memulai modul dengan gaya yang berbeda jika bidang ini disajikan?
- Bisakah saya memiliki lebih dari satu skrip yang diisi ke dalam parameter utama? Jika ya, apakah mereka akan dimulai sebagai dua utas? Jika tidak, bagaimana saya bisa memulai dua skrip dalam sebuah modul dan menjalankannya secara paralel?
Saya tahu bahwa pertanyaan kedua cukup aneh. Itu karena saya telah meng-host aplikasi Node.js di OpenShift tetapi aplikasi terdiri dari dua komponen utama. Satu menjadi REST API dan satu menjadi layanan pengiriman notifikasi.
Saya khawatir bahwa proses pengiriman notifikasi akan memblokir REST API jika diterapkan sebagai utas tunggal. Namun, mereka harus terhubung ke kartrid MongoDB yang sama. Selain itu, saya ingin menyimpan satu gigi jika kedua komponen bisa berfungsi dalam gigi yang sama jika memungkinkan.
Setiap saran dipersilahkan.
electron
menghargai parameter utama, yaituelectron .
memulai hal yang benar dari subfolder, jika ada misalnya"main": "dist/app/index.js",
dalampackage.json
(mungkin berlaku untuk platform / kerangka kerja lain juga).You can't have two scripts as main...
- benar. Namun, jika paket Anda kebetulan menyediakan misalnya beberapa perintah CLI (selama pengembangan dapat diakses di bawah./node_modules/.bin/<symlink>
) periksa parameter "bin" ..js
ekstensi di sini, tetapi "pengidentifikasi modul" tidak memiliki ekstensi .. saya tidak suka ambiguitas tentang yang seharusnya kita gunakanUntuk menjawab pertanyaan pertama Anda, cara Anda memuat modul tergantung pada titik masuk modul dan parameter utama package.json .
Katakanlah Anda memiliki struktur file berikut:
Tanpa parameter utama dalam package.json , Anda harus memuat modul dengan memberikan entry point modul:
require('my-npm-module/lib/module.js')
.Jika Anda mengatur package.json parameter utama sebagai berikut
"main": "lib/module.js"
, Anda akan dapat memuat modul cara ini:require('my-npm-module')
.sumber
Jika Anda memiliki misalnya dalam
package.json
file Anda :lib/entry.js
akan menjadi titik masuk utama ke paket Anda.Saat menelepon
dalam node,
lib/entry.js
akan menjadi file aktual yang diperlukan.sumber
Salah satu fungsi penting dari
main
kunci adalah menyediakan jalur untuk titik masuk Anda. Ini sangat membantu ketika bekerja dengannodemon
. Jika Anda bekerja dengannodemon
dan Anda menentukanmain
kunci di Andapackage.json
sebagai katakanlah"main": "./src/server/app.js"
, maka Anda dapat dengan mudah menghidupkan server dengan mengetikkannodemon
CLI dengan root sebagai pwd bukannodemon ./src/server/app.js
.sumber
Sejauh yang saya tahu, itu adalah titik masuk utama ke paket node Anda (pustaka) untuk npm. Ini hanya diperlukan jika proyek npm Anda menjadi paket simpul (pustaka) yang dapat diinstal melalui npm oleh orang lain.
Katakanlah Anda memiliki perpustakaan dengan folder build /, dist /, atau lib /. Di folder ini, Anda mendapatkan file yang dikompilasi berikut untuk perpustakaan Anda:
Kemudian di package.json Anda, Anda memberi tahu npm cara mengakses perpustakaan (paket node):
Setelah menginstal paket node dengan npm ke proyek JS Anda, Anda dapat mengimpor fungsionalitas dari file bundle.js yang dibundel :
Ini berlaku juga ketika menggunakan Pemecahan Kode (misalnya Webpack) untuk pustaka Anda. Sebagai contoh, webpack.config.js ini menggunakan kode yang membagi proyek menjadi beberapa bundel alih-alih satu.
Namun, Anda akan mendefinisikan satu titik masuk utama ke perpustakaan Anda di package.json Anda :
Kemudian ketika menggunakan perpustakaan, Anda dapat mengimpor file Anda dari titik masuk utama Anda:
Namun, Anda juga dapat mem - bypass titik masuk utama dari package.json dan mengimpor bundel kode yang terpecah:
Setelah semua, properti utama di package.json Anda hanya menunjuk ke file titik entri utama perpustakaan Anda.
sumber
Untuk OpenShift, Anda hanya mendapatkan satu PORT dan IP pair untuk diikat (per aplikasi). Kedengarannya seperti Anda harus dapat melayani kedua layanan dari instance nodejs tunggal dengan menambahkan rute internal untuk setiap titik akhir layanan.
Saya punya beberapa info tentang bagaimana OpenShift menggunakan package.json proyek Anda untuk memulai aplikasi Anda di sini: https://www.openshift.com/blogs/run-your-nodejs-projects-on-openshift-in-two-simple-steps #package_json
sumber
Anggap saja sebagai "titik awal".
Dalam pengertian pemrograman berorientasi objek, katakanlah C #, itu adalah init () atau konstruktor dari kelas objek, itulah yang dimaksud "titik masuk".
Sebagai contoh
sumber