Search code examples
ffmpegweb-deploymentgatsbynetlify

Gatsby Build fails on Netlify by works locally. Ffmpeg dependency issue


I'm trying to deploy my site on Netlify, and the gatsby build command works perfectly fine on my system. But when I run in on Netlify, I run into the issue shown below.

Unhandled rejection: cannot find ffprobe seems to be the issue. I think it's because I have ffmpeg installed on my system (macOS) but there is no installation procedure during the build process in Netlify. Can somebody please guide me as to what I can do to fix this?

1:19:18 AM: info bootstrap finished - 5.299 s
1:19:18 AM: ⠀
1:19:22 AM: error UNHANDLED REJECTION Cannot find ffprobe
1:19:23 AM: 
1:19:23 AM:   Error: Cannot find ffprobe
1:19:23 AM:   
1:19:23 AM:   - ffprobe.js:145 
1:19:23 AM:     [repo]/[fluent-ffmpeg]/lib/ffprobe.js:145:31
1:19:23 AM:   
1:19:23 AM:   - capabilities.js:194 
1:19:23 AM:     [repo]/[fluent-ffmpeg]/lib/capabilities.js:194:9
1:19:23 AM:   
1:19:23 AM:   - async.js:52 
1:19:23 AM:     [repo]/[async]/lib/async.js:52:16
1:19:23 AM:   
1:19:23 AM:   - async.js:1209 
1:19:23 AM:     [repo]/[async]/lib/async.js:1209:30
1:19:23 AM:   
1:19:23 AM:   - capabilities.js:186 
1:19:23 AM:     [repo]/[fluent-ffmpeg]/lib/capabilities.js:186:13
1:19:23 AM:   
1:19:23 AM:   - capabilities.js:123 
1:19:23 AM:     [repo]/[fluent-ffmpeg]/lib/capabilities.js:123:9
1:19:23 AM:   
1:19:23 AM:   - async.js:52 
1:19:23 AM:     [repo]/[async]/lib/async.js:52:16
1:19:23 AM:   
1:19:23 AM:   - async.js:1209 
1:19:23 AM:     [repo]/[async]/lib/async.js:1209:30
1:19:23 AM:   
1:19:23 AM:   - capabilities.js:116 
1:19:23 AM:     [repo]/[fluent-ffmpeg]/lib/capabilities.js:116:11
1:19:23 AM:   
1:19:23 AM:   - utils.js:223 
1:19:23 AM:     [repo]/[fluent-ffmpeg]/lib/utils.js:223:16
1:19:23 AM:   
1:19:23 AM:   - which.js:68 F
1:19:23 AM:     [repo]/[which]/which.js:68:16
1:19:23 AM:   
1:19:23 AM:   - which.js:80 E
1:19:23 AM:     [repo]/[which]/which.js:80:29
1:19:23 AM:   
1:19:23 AM:   - which.js:89 
1:19:23 AM:     [repo]/[which]/which.js:89:16
1:19:23 AM:   
1:19:23 AM:   - index.js:42 
1:19:23 AM:     [repo]/[isexe]/index.js:42:5
1:19:23 AM:   
1:19:23 AM:   - mode.js:8 
1:19:23 AM:     [repo]/[isexe]/mode.js:8:5
1:19:23 AM:   
1:19:23 AM: 
1:19:23 AM: not finished run queries - 4.168s
1:19:23 AM: not finished Generating image thumbnails - 4.111s
1:19:23 AM: (sharp:1520): GLib-CRITICAL **: 16:19:23.397: g_hash_table_lookup: assertion 'hash_table != NULL' failed
1:19:23 AM: (sharp:1520): GLib-CRITICAL **: 16:19:23.438: g_hash_table_lookup: assertion 'hash_table != NULL' failed
1:19:23 AM: Skipping functions preparation step: no functions directory set
1:19:23 AM: Caching artifacts
1:19:23 AM: Started saving node modules
1:19:23 AM: Finished saving node modules
1:19:23 AM: Started saving pip cache
1:19:23 AM: Finished saving pip cache
1:19:23 AM: Started saving emacs cask dependencies
1:19:23 AM: Finished saving emacs cask dependencies
1:19:23 AM: Started saving maven dependencies
1:19:23 AM: Finished saving maven dependencies
1:19:23 AM: Started saving boot dependencies
1:19:23 AM: Finished saving boot dependencies
1:19:23 AM: Started saving go dependencies
1:19:23 AM: Finished saving go dependencies
1:19:27 AM: Error running command: Build script returned non-zero exit code: 1
1:19:27 AM: Failing build: Failed to build site
1:19:27 AM: failed during stage 'building site': Build script returned non-zero exit code: 1
1:19:27 AM: Finished processing build request in 1m15.231125909s

My gatsby-config.js file is as follows:

module.exports = {
  siteMetadata: {
    title: "#######",
    author: "#######"
  },
  plugins: [
    "gatsby-plugin-sass",
    {
      resolve: "gatsby-source-filesystem",
      options: {
        name: "images",
        path: `${__dirname}/src/images`
      }
    },
    "gatsby-transformer-sharp",
    "gatsby-plugin-sharp",
    "gatsby-transformer-ffmpeg",
    "gatsby-plugin-ffmpeg"
  ]
}


Solution

  • Netlify's build image runs Ubuntu, so you can probably install ffmpeg with the following command:

    apt-get install ffmpeg
    

    You can prepend this script to your Netlify build command, i.e

    apt-get install ffmpeg && npm run build
    

    or stick it as a new script in your package.json.


    Instruction on building latest version of ffmpeg on Ubuntu: https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu