脚本未打印到console.log

时间:2019-07-09 13:50:15

标签: javascript node.js node-commander

我正在尝试按照说明here创建一个脚本,该脚本每5分钟打印一次。但是它不起作用:当我使用node scripts.js alive对其进行调用时,它没有任何输出,只是在终端中打开了新行。我在做什么错了?

const program = require('commander');

program.command('alive').action(async function() {

    console.log("testttt");

    function sleep(ms) {
        return new Promise(resolve => setTimeout(resolve, ms));
    };

    for (let i = 0; i <= 36; i++) {
        await sleep(300000);
        console.log(i);
    };

    process.exit(0);
});

我也尝试过,结果相同:

    for (let i = 0; i <= 36; i++) {
        await sleep(300000).then(async function(response) {
            console.log(i);
        });
    };

3 个答案:

答案 0 :(得分:1)

documentation for commander建议,要执行命令,您需要在末尾添加如下一行:

program.parse(process.argv);

答案 1 :(得分:1)

实际上,该脚本可以让您每秒钟执行一些操作。

使用node script.js

运行它
function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms))
}

async function func() {
    console.log('func')
    await sleep(1000)
    func()
}

func()

更新-根据指挥官的要求

使用./script.js -t

运行它
#!/usr/bin/env node

const program = require('commander')

program.option('-t, --tick', 'start the ticker')
program.parse(process.argv)

if (program.tick) {
    console.log('program.ticker started')
    ticker()
}

function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms))
}

async function ticker() {
    for (let i = 0; i <= 5; i++) {
        await sleep(1000)
        console.log(`tick ${i}`)
    }
    process.exit()
}

答案 2 :(得分:0)

嘿,这里的问题是你如何使用指挥官。如您所见,here已将其删除,并且可以正常工作。查看指挥官的文件。