我尝试使用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,则命令会运行,但是它们是异步运行的,因此由于未满足步骤之间的依赖关系,因此我的构建步骤失败了。
有人可以告诉我我在做什么错或提供任何见解吗?
谢谢!