0

我有一个用 Node.js 制作的在 Windows 中录制麦克风声音的简单程序。我在执行时遇到了一些麻烦。

在录制时,它可以完美运行并创建一个 .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() 函数的消息后中断。

有谁知道为什么会这样?

4

1 回答 1

0

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

因为,我们不知道你是如何计算的option,所以你是唯一可以解决它的人。

于 2018-10-17T07:21:59.100 回答