node js getasyn c с обещанием увеличить буфер - PullRequest
0 голосов
/ 21 января 2020

Я выполняю некоторые команды cmd с помощью getasyn c, и это выдает мне такую ​​ошибку:

Unhandled rejection RangeError [ERR_CHILD_PROCESS_STDIO_MAXBUFFER]: stderr maxBuffer length exceeded

Вывод довольно большой, но он мне нужен для отладки базовых сценариев python. Есть ли способ увеличить maxBuffer? Смотрите мой код:

thecaller: function(req, callback) {

const geoJSON = req.geoJSON;
const nameofinstance = req.name;
const Promise = require("bluebird");
const cmd = require('node-cmd');
const getAsync = Promise.promisify(cmd.get, { multiArgs: true, context: cmd });
getAsync(`python3 firstscript.py`)
  .then(() => getAsync(`python3 secondscript.py`))
  .then(callback(nameofplanung));

Проблема возникает при первом ".then"

1 Ответ

1 голос
/ 21 января 2020

Вместо использования node-cmd вы можете сделать что-то вроде следующего:

https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options

То, что вы хотите установить, это опция maxBuffer.

Пример немного изменен:

const { exec } = require('child_process');
const execAsync = function(cmd){ return new Promise((res,rej)=>{
  exec(cmd,{maxBuffer:4*1024*1024}, (error, stdout, stderr) => {
    if (error) {
      console.error(`exec error: ${error}`);
      rej(err)
    }
    console.log(`stdout: ${stdout}`);
    console.error(`stderr: ${stderr}`);
    res(stdout);
  });
})}
execAsync('ls').then(r=>...).catch(e=>...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...