【js原生调用Node.js】使用spawn如果cwd不存在会报错

如果使用spawn函数执行命令时,指定的cwd目录不存在,会导致spawn函数抛出ENOENT错误。这是因为spawn函数在执行命令时需要在指定的cwd目录下执行,如果该目录不存在,则无法执行命令。

要解决这个问题,可以在执行spawn函数之前检查cwd目录是否存在,如果不存在,则先创建该目录。以下是一个示例:

const { spawn } = require('child_process');
const fs = require('fs');

const command = 'ls';

const cwd = '/path/to/nonexistent/directory';

if (!fs.existsSync(cwd)) {
  fs.mkdirSync(cwd, { recursive: true });
}

const childProcess = spawn(command, [], { cwd: cwd });

childProcess.stdout.on('data', (data) => {
  console.log(`stdout: ${data}`);
});

childProcess.stderr.on('data', (data) => {
  console.error(`stderr: ${data}`);
});

childProcess.on('close', (code) => {
  console.log(`child process exited with code ${code}`);
});

在上面的示例中,使用fs.existsSync()函数检查cwd目录是否存在,如果不存在,则使用fs.mkdirSync()函数创建该目录。{ recursive: true }选项用于创建多级目录。然后使用spawn函数执行命令,指定cwd选项为cwd目录。childProcess.stdout和childProcess.stderr分别监听子进程的标准输出和标准错误输出,childProcess.on(‘close’)监听子进程的退出事件。

注意,如果在创建目录时发生错误,例如没有权限创建目录,则仍然会抛出错误。在这种情况下,需要根据具体情况进行处理。

你可能感兴趣的:(javascript,node.js,前端)