Are you trying to connect Google Sheets with your Next.js app?
I have come across an issue with failing builds when deploying to Vercel and to save you hours of debugging, here is what worked for me.
The Issue
All I wanted to do is to load data from Google Spreadsheet and display them in my React component. I am using Next.js and google-spreadsheets package.
In next.config.js
I am setting up the environmental variables to be able to connect to the Spreadsheet when the page is served .
module.exports = (phase) => { ... const env = { ... private_key: (() => { if (isDev) return process.env.private_key if (isProd) return process.env.private_key if (isStaging) return process.env.private_key return 'private_key:not (isDev,isProd && !isStaging,isProd && isStaging)' })(), ... } ... }
This worked fine locally but the build was failing when it was deployed to Vercel.
Error: error:0909006C:PEM routines:get_name:no start line
Here is the screenshot of the log.
After hours of debugging, calling for help and swearing at it, I had a look at how gatsby-source-google-spreadsheets works and there was the answer.
The Fix
To fix the issue I had to add .replace(/(\\r)|(\\n)/g, '\n')
after the private_key
.
if (isDev) return process.env.private_key.replace(/(\\r)|(\\n)/g, '\n') if (isProd) return process.env.private_key.replace(/(\\r)|(\\n)/g, '\n') if (isStaging) return process.env.private_key.replace(/(\\r)|(\\n)/g, '\n')
Happy times.
I am sure someone smarter than me can explain in the comments what exactly this regex does, I just know that it replaces \n
with real line breaks.