Скрипт не печатается в console.log - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь следовать инструкциям здесь , чтобы создать скрипт, который печатает что-то каждые 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 ]

1 голос
/ 09 июля 2019

Этот скрипт позволяет вам что-то делать каждую секунду.

Запустите его с 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()
}
1 голос
/ 09 июля 2019

Документация для командира предполагает, что для выполнения команды вам нужна строка в конце, например:

program.parse(process.argv);
0 голосов
/ 09 июля 2019

Эй, проблема здесь в том, как вы используете Commander.Как вы можете видеть здесь Я удалил его, и он работает.Проверьте документацию командира.

...