Программа прерывается во втором цикле без каких-либо ошибок - PullRequest
0 голосов
/ 17 октября 2018

У меня есть простая программа для записи звука с микрофона в Windows, сделанная с Node.js.У меня возникают некоторые проблемы, когда я выполняю его.

Во время записи он работает отлично и создает файл .wav, как и должен.Но я делаю это внутри цикла и выбираю пользовательские параметры (как программу с меню).Проблема заключается в том, что когда я снова нажимаю клавишу для записи другого файла .wav, моя программа прерывается без каких-либо ошибок или предупреждений.

Я оставляю здесь свой код для этой части.

const fs = require('fs')
const record = require('node-record-lpcm16')
const inquirer = require('inquirer')

var file = fs.createWriteStream('test.wav', { encoding: 'binary' })

main()

async function main(){
    var option =0 
    while(option!=1){
       //take option
       var option = await getOption()

       switch (option){
          case 0:
             await startRecording()  //Wait for user to press ENTER
             record.start().pipe(file)

        console.log("Recording audio")

        await stopRecording()     //Wait for user to press ENTER
        record.stop()
        console.log("Audio finished")
        break;

        case 1: 
        process.exit(0)
     }
  }
}
 function startRecording()
{
  const questions = [
  {
      name: 'key',
      type: 'input',
      message: 'Press enter to start recording'
  }]
   return inquirer.prompt(questions)


 }


function stopRecording()
 {
    const questions = [
    {
      name: 'key',
      type: 'input',
      message: 'Press enter to stop recording'
   }]
   return inquirer.prompt(questions)
 }
 function getOption(){
 const questions = [
 {
    name: 'option',
    type: 'integer',
    message: 'Select your option (0 or 1): ',
    validate: function( value ) {
      if (value.length) {
        return true
      } else {
      return 'Select your option (0 or 1): '
      }
    }
  }]
  return inquirer.prompt(questions)
}

Программа прерывается после печати сообщения функции stopRecording () во второй раз.

Кто-нибудь знает, почему это происходит?

1 Ответ

0 голосов
/ 17 октября 2018

В текущем коде ничего нет, что указывает на ошибку.Вам следует проверить значения, которые вы установили на option.Вы, скорее всего, установите его на 1 в третьем цикле, и он выйдет.

Поскольку мы не знаем, как рассчитать option, вы единственный, кто может это исправить.

...