如何运行自定义值的脚本?



我的脚本每秒钟向控制台打印文本,并在4秒后停止。我需要确保在文件运行时可以指定间隔和停止值。该文件应该使用以下命令运行:node index.js -i 1000 -t 4000。我该怎么做呢?

app.get("/", (req, res) => {
function outputText() {
console.log("Some Text");
}
const interval = setInterval(outputText, 1000);
setTimeout(() => {
clearInterval(interval);
}, 4000);
res.send();
});
app.listen(3000);

你可以使用npm包yargs

const yargs = require('yargs/yargs')
const { hideBin } = require('yargs/helpers');
const argv = yargs(hideBin(process.argv)).argv;
console.log('Interval', argv.i);
console.log('Stop', argv.t);

您可以使用process.argv读取传递给脚本的命令行参数。对于简单的情况,就像您的示例一样,您不需要任何库。检查是否预先传递了所有预期的输入值以避免意外的运行时错误也是最佳实践。你可能还想设置一些默认值。

作为命令行参数的另一种选择,您可能更喜欢使用环境变量process.env。在这种情况下,您不需要解析键/值,而只需通过其名称访问环境变量(请参阅我如何使用它来定制服务器正在侦听的端口)。

// Parse command line arguments.
// The first two values are node itself and path to the script
const args = process.argv.slice(2).reduce((acc, cur, i, arr) => {
if (i % 2) {
acc[arr[i-1]] = cur;
}
return acc;
}, {});
// Validate input
['-i', '-t'].forEach(opt => {
if (!args[opt]) {
console.error(`Missing required command line argument '${opt}'`);
process.exit(1);
}
});
app.get("/", (req, res) => {
function outputText() {
console.log("Some Text");
}
const interval = setInterval(outputText, args['-i']);
setTimeout(() => {
clearInterval(interval);
}, args['-t']);
res.send();
});
app.listen(process.env.PORT ?? 3000); // use 3000 as default, if environment variable is not set

最新更新