程序在第二个循环中中断,没有显示任何错误

时间:2018-10-17 07:12:55

标签: javascript node.js loops audio-recording inquirerjs

我有一个简单的程序,用于在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 :(得分:0)

当前代码中没有任何内容,指示错误。 您应该检查在option上设置的值。您很可能在第3个循环中将其设置为1并退出。

由于我们不知道您如何计算option,因此您是唯一可以解决它的人。