从终端运行node.js文件中的单独函数



我有一个javascript文件,我正在其中运行一些节点任务,并且希望能够根据我触发的终端命令单独运行它们。

例如,我的nodejs文件myFile代码可能如下所示:

const mysql = require('mysql');
const fs = require('fs');
const getDbData = () => {
...
...
}
const fileTransform = () => {
file transformation functionality
}

我希望能够分别运行每个函数,这样我就可以在终端中说node myFile.js getDbData。我需要导出每个函数才能执行此操作吗?

您可以在node命令行上为脚本提供命令行参数。您可以在process.argv阵列中接收它们。参数从索引2开始(0是指向node的完整路径,1是指向脚本的完整路径(。

例如:

switch (process.argv[2]) {
case "getData":
getData();
break;
case "etlData":
etlData();
break;
// ...
}

请注意,即使Node参数在实际命令行上位于脚本之前,参数也确实从索引2开始。例如:

node--严格使用您的脚本。js

…在process.argv[0]中仍然有node的完整路径,在process.argv[1]中仍然有脚本的完整路径。--use-strict参数根本不在数组中。


或者,您可以将函数放在对象上,并将参数用作键:

function getData() {
// ...
}
function getData() {
// ...
}
const functions = {
getData,
etlData
};
const fn = functions[process.argv[2]] || () => { console.log("Invalid option"); };
fn();

尝试使用process.argv

https://stackabuse.com/command-line-arguments-in-node-js/

解析命令行参数,例如,使用eval()进行评估

最新更新