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

Javascript 从终端运行node.js文件中的单独函数,javascript,node.js,terminal,Javascript,Node.js,Terminal,我有一个javascript文件,我正在其中运行一些节点任务,并且希望能够根据我触发的终端命令分别运行它们 例如,我的nodejs文件myFile代码可能如下所示: const mysql = require('mysql'); const fs = require('fs'); const getDbData = () => { ... ... } const fileTransform = () => { file transformation fun

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

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

const mysql = require('mysql');
const fs = require('fs');

const getDbData = () => {
    ...
    ...
}

const fileTransform = () => {
    file transformation functionality
}

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

尝试使用
process.argv


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

对其进行求值。您可以在
节点上为脚本提供命令行参数。您将在阵列中接收它们。参数从索引2开始(
0
是指向
节点的完整路径,
1
是指向脚本的完整路径)

例如:

switch (process.argv[2]) {
    case "getData":
        getData();
        break;
    case "etlData":
        etlData();
        break;
    // ...
}
node --use-strict your-script.js 请注意,即使实际命令行中的节点参数位于脚本之前,参数也确实从索引2开始。例如:

switch (process.argv[2]) {
    case "getData":
        getData();
        break;
    case "etlData":
        etlData();
        break;
    // ...
}
node --use-strict your-script.js
在试图理解您的答案时,您的建议是这样的:
switch(process.argv[2]){case'getData':getData();break;case'etlData':etlData();break;}
是的,类似这样的建议。或者你可以使用dispatch对象,我在答案中添加了一个例子。感谢提供更新。但是,
|
之后的函数有一个问题,我如何在终端中运行该函数来分别触发函数?
节点yourscript.js getData
节点yourscript.js etlData
和(触发catch all)
node yourscript.js任何其他内容
。我已经用您的建议更新了我的问题,现在我看到了一个错误:
TypeError:fn不是一个函数
。知道是什么引起的吗?谢谢