execSync没有运行我的命令

时间:2018-08-01 14:16:44

标签: javascript node.js

我尝试使用execSync同步运行一些命令。但是它没有运行我给它的命令,而是似乎只是将其打印出来了。

上下文: 我正在尝试运行测试以启动本地开发环境。为此,有4个步骤:1.启动数据库,2启动Kinesis,3.运行数据库迁移,4启动服务器。这些需求以它们之间的依赖关系的顺序发生。我将命令放入数组中,希望遍历并同步执行每个命令。下面是我的代码:

let child = require('child_process');
const commandList = ['localdb up' , 'local kinesis up',
    './node_modules/.bin/flyway  -configFile=./flyway.conf migrate',
     'serverless webpack serve -p 8801 --stage local'];


commandList.forEach((command) => {
    console.log(command);
    setUp(command);
})


async function setUp(command) {
        child.execSync( command, function (error, stdout, stderr) {
        if (error) {
            console.log(error);
        }
        if (stderr) {

            console.log(stderr);
        }
        console.log(stdout);
    });

}   

但是,这不起作用。它似乎只是以同步方式将命令输出到控制台。如果我改用.exec而不是.execSync,则命令会运行,但是它们是异步运行的,因此由于未满足步骤之间的依赖关系,因此我的构建步骤失败了。

有人可以告诉我我在做什么错或提供任何见解吗?

谢谢!

0 个答案:

没有答案