Piszę aplikację internetową w węźle. Jeśli mam plik JS db.js
z funkcją init
, jak mogę wywołać tę funkcję z wiersza poleceń?
javascript
node.js
command-line
winhowes
źródło
źródło
Odpowiedzi:
Bez komentarza na temat tego, dlaczego chcesz to zrobić, ani na temat bardziej standardowej praktyki: oto rozwiązanie twojego pytania ... Pamiętaj, że rodzaj cudzysłowu wymagany w wierszu poleceń może się różnić.
W twoim
db.js
wyeksportujinit
funkcję. Istnieje wiele sposobów, ale na przykład:Następnie nazwij to w następujący sposób, zakładając, że Twój plik
db.js
znajduje się w tym samym katalogu co wiersz polecenia:Dla innych czytelników funkcję OP
init
można było nazwać czymkolwiek, to nie jest ważne, to tylko konkretna nazwa użyta w pytaniu.źródło
module.exports.init = function () { console.log('hi'); };
Inode -e 'require("./db").init()'
jakoś mi nie działało. Nie jestem pewien, co zrobiłem źle, ale podążając za twoim pomysłem, wykorzystałemmodule.exports = myFunction,
, a potemnode -e 'require("./myFunction")()'
pracowałem dla siebie.node -e 'require("./index").handler(require("./fixtures/sample_event_01.json"), {}, console.log)'
. Środek{}
będzie kontekstem, możesz się dostosować. Również console.log jest nieco prymitywny, ale dobry początek. Oczywiście możesz także napisać dedykowany plik CLI.js, który z kolei wymaga () indeksu.js / handler, jak podano w innych komentarzach.Podobnie jak w przypadku innych odpowiedzi, dodaj do
someFile.js
Następnie możesz dodać następujące elementy
package.json
Z terminala możesz następnie zadzwonić
Uważam, że jest to o wiele łatwiejszy sposób zapamiętywania poleceń i ich używania
źródło
Spróbuj uruchomić .
W db.js dodaj
require('make-runnable');
na końcu.Teraz możesz zrobić:
Wszelkie dalsze argumenty zostaną przekazane do
init
metody.źródło
Uruchom bezpośrednio z CLI (globalnie)
zainstalować
Użycie, tzn. Uruchomienie funkcji „init”, należy ją wyeksportować, patrz na dole
lub
Uruchom ze skryptu package.json (lokalny)
zainstalować
Ustawiać
Stosowanie
Params
Wszelkie następujące argumenty zostaną przekazane jako parametry funkcji
init(param1, param2)
Ważny
funkcja (w tym przykładzie
init
) musi zostać wyeksportowana do pliku zawierającego jąlub eksport ES6
źródło
make-runnable
, ale myślę , że jest to o wiele lepsze. Dzięki.npm i -g run-func
prosta droga:
załóżmy, że masz plik db.js w katalogu helpers w strukturze projektu.
teraz przejdź do katalogu helpers i przejdź do konsoli węzła
2) wymagają pliku db.js
3) wywołaj swoją funkcję (w twoim przypadku jej init ())
mam nadzieję że to pomoże
źródło
Jeśli z kolei
db.js
do modułu można wymagać to oddb_init.js
i tylko:node db_init.js
.db.js:
db_init.js:
źródło
Ten jest brudny, ale działa
:)
Będę wywoływał
main()
funkcję z mojego skryptu. Wcześniej po prostu wstawiałem wywołania main na końcu skryptu. Dodałem jednak kilka innych funkcji i wyeksportowałem je ze skryptu (aby użyć funkcji w niektórych innych częściach kodu) - ale nie chcę wykonywać funkcji main () za każdym razem, gdy importuję inne funkcje w innych skryptach.Zrobiłem to, w swoim skrypcie usunąłem wywołanie funkcji main (), a zamiast tego na końcu skryptu sprawdziłem:
Więc kiedy chcę wywołać tę funkcję w CLI:
node src/myScript.js main
źródło
Robię IIFE, coś takiego:
ten kod zostanie wykonany natychmiast i wywoła funkcję init.
źródło
node init.js
a plik zawiera IIFE, będzie działać. Myślę, że nie do końca zrozumiałem twoje pytanie. Przepraszam.(init)();
jeśli chcesz :)Czasami chcesz uruchomić funkcję przez CLI, czasem chcesz
require
z innego modułu. Oto jak to zrobić.źródło
Proste, w pliku javascript testfile.js:
Uruchamianie po monicie:
źródło
test
jest uruchamiany za każdym razem, więc musisz zmienić plik, aby wywołać inną funkcję)Jeśli plik zawiera tylko funkcję, na przykład:
myFile.js:
Wywołanie go z wiersza poleceń w ten sposób nic się nie wydarzy:
Ale jeśli zmienisz plik:
myFile.js:
Teraz będzie to działać z wiersza poleceń:
źródło