Saya sedang menulis aplikasi web di Node. Jika saya punya beberapa file JS db.js
dengan fungsi init
di dalamnya bagaimana saya bisa memanggil fungsi itu dari baris perintah?
javascript
node.js
command-line
winhowes
sumber
sumber
Jawaban:
Tidak ada komentar tentang mengapa Anda ingin melakukan ini, atau apa yang mungkin menjadi praktik yang lebih standar: di sini adalah solusi untuk pertanyaan Anda .... Ingatlah bahwa jenis kutipan yang diperlukan oleh baris perintah Anda dapat bervariasi.
Di Anda
db.js
, eksporinit
fungsi. Ada banyak cara, tetapi misalnya:Kemudian panggil seperti ini, dengan anggapan Anda
db.js
berada di direktori yang sama dengan command prompt Anda:Bagi pembaca lain, fungsi OP
init
bisa disebut apa saja, tidak penting, hanya nama spesifik yang digunakan dalam pertanyaan.sumber
module.exports.init = function () { console.log('hi'); };
Dannode -e 'require("./db").init()'
entah bagaimana tidak berhasil untuk saya. Saya tidak yakin apa yang saya lakukan salah, tetapi dengan mengikuti ide Anda, saya menggunakanmodule.exports = myFunction,
, dan kemudiannode -e 'require("./myFunction")()'
bekerja untuk saya.node -e 'require("./index").handler(require("./fixtures/sample_event_01.json"), {}, console.log)'
. Bagian tengah{}
akan menjadi konteksnya, jangan ragu untuk menyesuaikan. Juga console.log agak primitif tetapi awal yang bagus. Tentu saja Anda juga dapat menulis CLI.js khusus yang pada gilirannya memerlukan () indeks.js / handler seperti yang dinyatakan dalam komentar lain.Sesuai jawaban lain, tambahkan yang berikut ke
someFile.js
Anda kemudian dapat menambahkan yang berikut ke
package.json
Dari terminal, Anda dapat menelepon
Saya menemukan ini cara yang jauh lebih mudah untuk mengingat perintah dan menggunakannya
sumber
Coba make-runnable .
Di db.js, tambahkan
require('make-runnable');
sampai akhir.Sekarang Anda bisa melakukannya:
Argumen lebih lanjut akan diteruskan ke
init
metode.sumber
Jalankan langsung dari CLI (global)
Install
Penggunaan yaitu menjalankan fungsi "init", itu harus diekspor, lihat bagian bawah
atau
Jalankan dari script package.json (lokal)
Install
Mempersiapkan
Pemakaian
Params
Argumen berikut akan diteruskan sebagai parameter fungsi
init(param1, param2)
Penting
fungsi (dalam contoh ini
init
) harus diekspor dalam file yang memuatnyaatau ekspor ES6
sumber
make-runnable
, tetapi ini jauh lebih baik dari itu, saya pikir. Terima kasih.npm i -g run-func
cara sederhana:
katakanlah Anda memiliki file db.js di direktori helpers dalam struktur proyek.
sekarang masuk ke dalam direktori helpers dan pergi ke konsol node
2) membutuhkan file db.js
3) panggil fungsi Anda (dalam kasus Anda init ())
semoga ini membantu
sumber
Jika Anda mengubah
db.js
ke dalam modul Anda dapat meminta daridb_init.js
dan hanya:node db_init.js
.db.js:
db_init.js:
sumber
Yang ini kotor tapi berfungsi
:)
Saya akan memanggil
main()
fungsi dari skrip saya. Sebelumnya saya hanya melakukan panggilan ke utama di akhir skrip. Namun saya memang menambahkan beberapa fungsi lain dan mengekspornya dari skrip (untuk menggunakan fungsi di beberapa bagian kode lainnya) - tetapi saya tidak ingin menjalankan fungsi main () setiap kali saya mengimpor fungsi lain di skrip lain.Jadi saya melakukan ini, dalam skrip saya menghapus panggilan ke main (), dan sebagai gantinya di akhir skrip saya beri tanda centang:
Jadi ketika saya ingin memanggil fungsi itu di CLI:
node src/myScript.js main
sumber
Saya melakukan IIFE, sesuatu seperti itu:
kode ini akan dieksekusi segera dan menjalankan fungsi init.
sumber
node init.js
dan file berisi IIFE itu akan berfungsi. Saya pikir saya tidak sepenuhnya memahami pertanyaan Anda. Maaf.(init)();
jika Anda mau :)Terkadang Anda ingin menjalankan fungsi melalui CLI, terkadang Anda ingin menjalankannya
require
dari modul lain. Inilah cara melakukan keduanya.sumber
Sederhana, dalam file javascript testfile.js:
Berjalan saat diminta:
sumber
test
dijalankan setiap kali, jadi Anda harus mengubah file untuk memanggil fungsi lain)Jika file Anda hanya berisi fungsi Anda, misalnya:
myFile.js:
Memanggilnya dari baris perintah seperti ini tidak akan terjadi apa-apa:
Tetapi jika Anda mengubah file Anda:
myFile.js:
Sekarang ini akan berfungsi dari baris perintah:
sumber