如何解决从终端在node.js文件中运行单独的功能
我有一个javascript文件,我正在其中运行一些节点任务,并且希望能够根据我触发的终端命令单独运行它们。
例如,我的nodejs文件myFile
代码看起来像这样:
const mysql = require('mysql');
const fs = require('fs');
const getDbData = () => {
...
...
}
const fileTransform = () => {
file transformation functionality
}
我希望能够分别运行每个功能,以便可以在终端中说node myFile.js getDbData
。我是否需要导出每个功能才能做到这一点?
解决方法
尝试使用process.argv
。
https://stackabuse.com/command-line-arguments-in-node-js/
解析命令行参数,例如,使用eval()
您可以在node
命令行上为脚本提供命令行参数。您通过process.argv
数组接收它们。您的参数从索引2开始(0
是node
的完整路径,1
是脚本的完整路径)。
例如:
switch (process.argv[2]) {
case "getData":
getData();
break;
case "etlData":
etlData();
break;
// ...
}
请注意,即使Node实参在实际命令行上位于脚本之前,您的实参也确实从索引2开始。例如:
node --use-strict your-script.js
...在node
中仍然具有指向process.argv[0]
的完整路径,在process.argv[1]
中具有脚本的完整路径。 --use-strict
参数根本不在数组中。
或者您可以将函数放在对象上,然后将参数用作键:
function getData() {
// ...
}
function getData() {
// ...
}
const functions = {
getData,etlData
};
const fn = functions[process.argv[2]] || () => { console.log("Invalid option"); };
fn();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。