Düğümde bir web uygulaması yazıyorum. İçinde db.js
bir işlev init
bulunan bazı JS dosyası varsa , komut satırından bu işlevi nasıl çağırabilirim?
Düğümde bir web uygulaması yazıyorum. İçinde db.js
bir işlev init
bulunan bazı JS dosyası varsa , komut satırından bu işlevi nasıl çağırabilirim?
Yanıtlar:
Bunu neden yapmak istediğinize veya daha standart bir uygulama olabileceğine dair bir yorum yok: işte sorunuza bir çözüm .... Komut satırınız için gereken teklif türünün değişebileceğini unutmayın.
Bölümünde işlevi db.js
dışa aktarın init
. Birçok yol var, ancak örneğin:
module.exports.init = function () {
console.log('hi');
};
Ardından db.js
, komut isteminizle aynı dizinde olduğunu varsayarak bunu şöyle çağırın :
node -e 'require("./db").init()'
Diğer okuyucular için, OP'nin init
işlevi herhangi bir şey olarak adlandırılmış olabilir, önemli değil, sadece soruda kullanılan özel addır.
module.exports.init = function () { console.log('hi'); };
Ve bir node -e 'require("./db").init()'
şekilde benim için çalışmadı. Neyi yanlış yaptığımdan emin değilim, ama fikrinizi takip ederek kullandım module.exports = myFunction,
ve sonra node -e 'require("./myFunction")()'
benim için çalıştım.
node -e 'require("./index").handler(require("./fixtures/sample_event_01.json"), {}, console.log)'
. Orta {}
bağlam olurdu, ayarlamaktan çekinmeyin. Ayrıca console.log biraz ilkel ama güzel bir başlangıç. Tabii ki diğer yorumlarda belirtildiği gibi index) / handler () 'ı gerektiren bir özel CLI.js yazabilirsiniz.
Diğer cevaplara göre aşağıdakileri ekleyin: someFile.js
module.exports.someFunction = function () {
console.log('hi');
};
Daha sonra aşağıdakileri ekleyebilirsiniz: package.json
"scripts": {
"myScript": "node -e 'require(\"./someFile\").someFunction()'"
}
Terminalden, daha sonra
npm run myScript
Bunu komutları hatırlamanın ve kullanmanın çok daha kolay bir yolunu buluyorum
Çalıştırılabilir yapmayı deneyin .
Db.js'de require('make-runnable');
sonuna ekleyin .
Şimdi şunları yapabilirsiniz:
node db.js init
Başka argümanlar init
yönteme geçecektir .
Doğrudan CLI'den (global) çalıştır
Yüklemek
npm i -g run-func
Kullanım yani çalışma fonksiyonu "init", ihraç edilmelidir, bakın alt
run-func db.js init
veya
Package.json komut dosyasından çalıştır (yerel)
Yüklemek
npm i -S run-func
Kurmak
"scripts": {
"init": "run-func db.js init"
}
kullanım
npm run init
parametreler
Aşağıdaki bağımsız değişkenler işlev parametresi olarak iletilir init(param1, param2)
run-func db.js init param1 param2
Önemli
işlev (bu örnekte init
), onu içeren dosyaya aktarılmalıdır
module.exports = { init };
veya ES6 dışa aktarma
export { init };
make-runnable
, ama bu çok daha iyi, diye düşünüyor. Teşekkürler.
npm i -g run-func
basit yol:
diyelim ki proje yapısında bir yardımcılar dizininde db.js dosyanız var.
şimdi helpers dizinine gidin ve düğüm konsoluna gidin
helpers $ node
2) db.js dosyası gerektirir
> var db = require("./db")
3) işlevinizi çağırın (sizin durumunuzda init ())
> db.init()
Bu yardımcı olur umarım
Bu kirli ama çalışıyor :)
Komutumdan main()
fonksiyon çağırıyorum . Daha önce script'in sonuna main çağrıları koydum. Ancak ben diğer bazı işlevler ekledim ve (kodun diğer bazı bölümlerinde işlevleri kullanmak için) komut dosyasından ihraç - ama ben diğer komutları diğer işlevleri almak her zaman main () işlevini yürütmek istemiyorum.
Bu yüzden bunu yaptım, benim betiğimde main () çağrısını kaldırdım ve betiğin sonunda bu denetimi koydum:
if (process.argv.includes('main')) {
main();
}
CLI'de bu işlevi çağırmak istediğimde: node src/myScript.js main
Ben bir IIFE, böyle bir şey yapmak:
(() => init())();
bu kod hemen yürütülür ve init işlevini çağırır.
node init.js
ve dosya bir IIFE içeriyorsa çalışır. Sorunuzu tam olarak anlamadığımı düşünüyorum. Afedersiniz.
(init)();
:)
Basit, javascript testfile.js dosyasında:
module.exports.test = function () {
console.log('hi');
};
this.test();
Bilgi isteminde çalışan:
node testfile.js
test
her seferinde çalıştırılır, bu nedenle dosyayı başka bir işlevi çağırmak için değiştirmeniz gerekir)
Dosyanız yalnızca işlevinizi içeriyorsa, örneğin:
myFile.js:
function myMethod(someVariable) {
console.log(someVariable)
}
Komut satırından böyle çağırmak hiçbir şey olmayacak:
node myFile.js
Ancak dosyanızı değiştirirseniz:
myFile.js:
myMethod("Hello World");
function myMethod(someVariable) {
console.log(someVariable)
}
Şimdi bu komut satırından çalışacaktır:
node myFile.js