title: Node.js - I keep getting the following error: Error: ffmpeg stream: write EPIPE
body: <p>I'm currently programming a Discord bot using <code>discord.js</code>, and I'm using <code>ytdl-core</code> to play music. Here is the program I'm using to play music:</p>
  
  <pre class="lang-js prettyprint-override"><code>const {google} = require('googleapis');
  const ytdl = require('ytdl-core');
  // Initialise Google API
  const youtube = google.youtube({
      version: 'v3',
      auth: MyAuth
  });
  musicQueue = [] // Queue for playing music
  dispatcher = null; // Transmits voice packets from stream
  
  module.exports = {
      name: "play",
  
      async execute(msg, args) { // msg is a Discord Message
          // Play music and music queued after
          async function playAndQueue(stream) {
  
              // Join voice channel
              voiceChannel = client.channels.cache.find(channel =&gt; channel.type === "voice" &amp;&amp; channel.name === "music-channel");
              voiceConnection = voiceChannel.join();
  
              dispatcher = await voiceConnection.play(stream, {volume: 0.3}); // Decrease volume to prevent clipping
  
              // When music stops
              dispatcher.on("finish", async reason =&gt; {
                  if (musicQueue[0]) { // Still have music queued
                      const nextVideoLink = musicQueue[0]; // Next video to play
                      const stream = ytdl(nextVideoLink, {filter: 'audioonly'});
  
                      playAndQueue(stream);
                      dispatcherInfo = await ytdl.getInfo(nextVideoLink);
                      musicQueue.shift();
                  } else { // No music to play
                      dispatcher = null;
                      dispatcherInfo = null;
                  }
              });
  
              dispatcher.on("error", console.log);
              dispatcher.on("debug", console.log);
  
          }
  
          // Search Youtube using args
          const youtubeSearchResult = await youtube.search.list({
              part: 'snippet',
              type: 'video', // We do not want channels or playlists
              q: args.join(' '),
              maxResults: 1 // We only need first search result
          });
          const youtubeVideo = youtubeSearchResult.data.items[0];
          if (! youtubeVideo) {
              msg.channel.send("Error: Could not find any music matching search.");
              return;
          }
  
          const videoLink = `https://www.youtube.com/watch?v=${youtubeVideo.id.videoId}`; // Link to video
  
          const stream = ytdl(videoLink, {filter: 'audioonly'});
          const videoInfo = await ytdl.getInfo(videoLink);
  
  
          if (dispatcher) { // Currently playing music
              musicQueue.push(videoLink);
              msg.channel.send(`**${videoInfo.title}** has been added into the queue!`);
          } else {
              playAndQueue(stream);
              dispatcherInfo = videoInfo;
              msg.channel.send(`Currently playing **${videoInfo.title}**!`);
          }
      }
  }
  </code></pre>
  
  <p>However, when I try to run the program on Heroku, I get this error:</p>
  
  <pre><code>ffmpeg stream: write EPIPE
      at WriteWrap.onWriteComplete [as oncomplete (internal/stream_base_commons.js:92:16) {
    errno: 'EPIPE',
    code: 'EPIPE',
    syscall: 'write'
  }
  </code></pre>
  
  <p>What can I do?</p>