NodeでWebアプリを書いています。関数init
を含むJSファイルdb.js
がある場合、コマンドラインからその関数を呼び出す方法を教えてください。
なぜこれをしたいのか、何がより標準的なやり方であるのかについてのコメントはありません。これがあなたの質問に対する解決策です。あなたのコマンドラインに必要な引用符の種類は異なるかもしれません。
db.js
にinit
関数をエクスポートします。いろいろな方法がありますが、例えば:
module.exports.init = function () {
console.log('hi');
};
db.js
があなたのコマンドプロンプトと同じディレクトリにあると仮定して、それを次のように呼び出します。
node -e 'require("./db").init()'
他の読者にとって、OPのinit
関数は何でも呼ばれているかもしれません、それは重要ではありません、それは質問で使用されるただ特定の名前です。
他の答えと同様に、someFile.js
に以下を追加してください。
module.exports.someFunction = function () {
console.log('hi');
};
その後、以下をpackage.json
に追加できます。
"scripts": {
"myScript": "node -e 'require(\"./someFile\").someFunction()'"
}
端末から、電話をかけることができます
npm run myScript
私はこれがコマンドを覚えてそれらを使うもっとずっと簡単な方法を見つける
make-runnable を試してください。
Db.jsで、最後にrequire('make-runnable');
を追加します。
今、あなたはできる:
node db.js init
それ以上の引数はinit
メソッドに渡されます。
プロジェクトにrun-funcをインストールしてください。
npm i -D run-func
エクスポートした関数を実行する
run-func db.js init
以下の引数は関数パラメータとして渡されますinit(param1, param2)
run-func db.js init param1 param2
これはpackage.jsonの "scripts"セクションからも実行できます。
"db-init": "run-func db.js init"
重要関数(この例ではinit
)はそれを含むファイルにエクスポートされなければなりません
module.exports = { init };
またはES6エクスポート
export { init };
簡単な方法:
プロジェクト構造のhelpersディレクトリにdb.jsファイルがあるとしましょう。
これで、ヘルパーディレクトリの中に入り、そしてノードコンソールに行きます。
helpers $ node
2)db.jsファイルが必要
> var db = require("./db")
3)あなたの関数を呼び出す(あなたの場合はinit())
> db.init()
お役に立てれば
db.js
をモジュールに変えるならば、db_init.js
からそれを要求することができます、そして、ちょうどnode db_init.js
。
db.js:
module.exports = {
method1: function () { ... },
method2: function () { ... }
}
db_init.js:
var db = require('./db');
db.method1();
db.method2();
これは汚れていますが、動作します:)
スクリプトからmain()
関数を呼び出します。以前は、スクリプトの最後にmainを呼び出していました。しかし、他の関数を追加してスクリプトからエクスポートしました(コードの他の部分で関数を使用するため)。ただし、他のスクリプトに他の関数をインポートするたびにmain()関数を実行したくはありません。
だから私はこれをした、私のスクリプトで私はmain()への呼び出しを削除し、そして代わりに私はこのチェックを置く:
if (process.argv.includes('main')) {
main();
}
だから私はCLIでその関数を呼び出したいとき:node src/myScript.js main
私はIIFEをやっています。
(() => init())();
このコードはただちに実行され、init関数を呼び出します。