Upgrade Your Drupal Skills

We trained 1,000+ Drupal Developers over the last decade.

See Advanced Courses NAH, I know Enough

Gatsby + Drupal (in Lando)

Parent Feed: 

This post will document how to get Gatsby to talk to Drupal when Drupal is running in Lando.


For whatever reason, trying to get Gatsby to access Drupal in a Lando container doesn't work. I'm not sure if it's localhost or localhost:PORT that Gatsby has trouble with, but we can work around that limitation by using ngrok. ngrok lets us access localhost URLs from a public URL. I installed it on my Mac using Homebrew (cask), but you can visit the downloads page for other methods of installation. You'll also have to register on the ngrok website, but their free account will work just fine.

Once you have ngrok installed, set up Lando as usual. In my particular instance, I used the pantheon recipe, but any recipe should work.

Start up your Lando app (lando start). Once it has successfully started, Lando will provide you with a handful of URLs you can use to access Drupal within Lando. I've found the best results when using the non https localhost:PORT URL. As a side note, this port changes every time your Lando app is restarted.

Open up a terminal, and type in

ngrok http http://localhost:PORT

where PORT equals your Lando app's port as noted above.

Once ngrok has started, you'll get a few more URLs, but the one you want is labeled "Forwarding" and starts with http://.

If using gatsby-source-drupal, put this URL in the baseUrl option in gatsby-config.js (or use a .env.development file):

...
plugins: [
  {
    resolve: `gatsby-source-drupal`,
    options: {
      baseUrl: `http://xxxxxxxxxxxx.ngrok.io`,
      apiBase: `jsonapi`,
    },
  },
]
...

You can now start Gatsby (npm run develop).


One little tip: in your Gatsby package.json, add this to your scripts section:

"scripts": {
  "refresh": "curl -X POST http://localhost:8000/__refresh",
}

You will need to create a .env.development file at the root of your Gatsby project if you don't already have one, and add the following:

ENABLE_GATSBY_REFRESH_ENDPOINT=true

This will allow you to grab new content from Drupal without having to stop and restart Gatsby:

npm run refresh
Author: 
Original Post: 

About Drupal Sun

Drupal Sun is an Evolving Web project. It allows you to:

  • Do full-text search on all the articles in Drupal Planet (thanks to Apache Solr)
  • Facet based on tags, author, or feed
  • Flip through articles quickly (with j/k or arrow keys) to find what you're interested in
  • View the entire article text inline, or in the context of the site where it was created

See the blog post at Evolving Web

Evolving Web