Estou escrevendo um aplicativo Web no Node. Se eu tiver algum arquivo JS db.js
com uma função init
, como eu poderia chamar essa função na linha de comando?
javascript
node.js
command-line
winhowes
fonte
fonte
Respostas:
Não há comentários sobre o motivo pelo qual você deseja fazer isso ou qual poderia ser uma prática mais padrão: aqui está uma solução para sua pergunta ... Lembre-se de que o tipo de cotação exigido pela sua linha de comando pode variar.
No seu
db.js
, exporte ainit
função. Existem várias maneiras, mas por exemplo:Em seguida, chame-o assim, assumindo que você
db.js
esteja no mesmo diretório que seu prompt de comando:Para outros leitores, a
init
função do OP poderia ter sido chamada de qualquer coisa, não é importante, é apenas o nome específico usado na pergunta.fonte
module.exports.init = function () { console.log('hi'); };
Enode -e 'require("./db").init()'
não funcionou para mim de alguma forma. Não sei ao certo o que fiz de errado, mas seguindo sua ideia, useimodule.exports = myFunction,
e depoisnode -e 'require("./myFunction")()'
trabalhei para mim.node -e 'require("./index").handler(require("./fixtures/sample_event_01.json"), {}, console.log)'
. O meio{}
seria o contexto, fique à vontade para se ajustar. O console.log também é um pouco primitivo, mas é um bom começo. Obviamente, você também pode escrever um CLI.js dedicado que, por sua vez, exija () o index.js / handler, conforme declarado em outros comentários.Conforme as outras respostas, adicione o seguinte a
someFile.js
Você pode adicionar o seguinte a
package.json
No terminal, você pode ligar para
Acho essa uma maneira muito mais fácil de lembrar dos comandos e usá-los
fonte
Tente tornar executável .
No db.js, adicione
require('make-runnable');
até o final.Agora você pode fazer:
Quaisquer argumentos adicionais seriam passados para o
init
métodofonte
Executar diretamente da CLI (global)
Instalar
Uso ou seja, execute a função "init", ela deve ser exportada, veja o final
ou
Executar a partir do script package.json (local)
Instalar
Configuração
Uso
Params
Quaisquer argumentos a seguir serão passados como parâmetros de função
init(param1, param2)
Importante
a função (neste exemplo
init
) deve ser exportada no arquivo que a contémou exportação ES6
fonte
make-runnable
, mas isso é muito melhor do que isso, eu pensa. Obrigado.npm i -g run-func
maneira simples:
digamos que você tenha o arquivo db.js em um diretório de ajuda na estrutura do projeto.
agora entre no diretório helpers e vá para o console do nó
2) exigir arquivo db.js.
3) chame sua função (no seu caso, init ())
espero que isto ajude
fonte
Se você transformar
db.js
em um módulo que você pode exigir que a partirdb_init.js
e apenas:node db_init.js
.db.js:
db_init.js:
fonte
Este está sujo, mas funciona
:)
Vou chamar a
main()
função do meu script. Anteriormente, acabei de colocar chamadas para main no final do script. No entanto, adicionei outras funções e as exportei do script (para usar funções em outras partes do código) - mas não quero executar a função main () toda vez que importo outras funções em outros scripts.Então eu fiz isso, no meu script eu removi a chamada para main () e, em vez disso, no final do script, coloquei esta verificação:
Então, quando eu quero chamar essa função na CLI:
node src/myScript.js main
fonte
Eu faço um IIFE, algo assim:
este código será executado imediatamente e chamará a função init.
fonte
node init.js
e o arquivo contiver um IIFE, ele funcionará. Eu acho que não entendi completamente sua pergunta. Desculpe.(init)();
se quiser :)Às vezes, você deseja executar uma função via CLI, outras, a
require
partir de outro módulo. Veja como fazer as duas coisas.fonte
Simples, no arquivo javascript testfile.js:
Executando no prompt:
fonte
test
é executado toda vez, então você precisa alterar o arquivo para chamar outra função)Se seu arquivo contiver apenas sua função, por exemplo:
myFile.js:
Chamando a partir da linha de comando como esta, nada acontecerá:
Mas se você alterar seu arquivo:
myFile.js:
Agora isso funcionará na linha de comando:
fonte