Javascript 从终端运行node.js文件中的单独函数
我有一个javascript文件,我正在其中运行一些节点任务,并且希望能够根据我触发的终端命令分别运行它们 例如,我的nodejs文件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
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不是一个函数
。知道是什么引起的吗?谢谢