From e55f2a974a88e8a76191a583702d2e9b51b0465f Mon Sep 17 00:00:00 2001 From: ehmicky Date: Thu, 11 Mar 2021 20:47:44 +0100 Subject: [PATCH] fix: fix errors while loading `next.config.js` --- helpers/doesNotNeedPlugin.js | 4 ++-- helpers/getNextConfig.js | 6 +++++- index.js | 6 ++++-- src/lib/helpers/getI18n.js | 2 +- src/lib/helpers/getNextConfig.js | 15 --------------- src/lib/helpers/getNextDistDir.js | 2 +- src/lib/helpers/getPrerenderManifest.js | 2 +- 7 files changed, 14 insertions(+), 23 deletions(-) delete mode 100644 src/lib/helpers/getNextConfig.js diff --git a/helpers/doesNotNeedPlugin.js b/helpers/doesNotNeedPlugin.js index dfb911467e..92cd9dcc4e 100644 --- a/helpers/doesNotNeedPlugin.js +++ b/helpers/doesNotNeedPlugin.js @@ -5,7 +5,7 @@ const isStaticExportProject = require('./isStaticExportProject') const doesSiteUseNextOnNetlify = require('./doesSiteUseNextOnNetlify') const hasCorrectNextConfig = require('./hasCorrectNextConfig') -const doesNotNeedPlugin = async ({ netlifyConfig, packageJson, utils }) => { +const doesNotNeedPlugin = async ({ netlifyConfig, packageJson, failBuild }) => { const { build } = netlifyConfig const { name, scripts = {} } = packageJson const nextConfigPath = await findUp('next.config.js') @@ -13,7 +13,7 @@ const doesNotNeedPlugin = async ({ netlifyConfig, packageJson, utils }) => { return ( isStaticExportProject({ build, scripts }) || doesSiteUseNextOnNetlify({ packageJson }) || - !(await hasCorrectNextConfig({ nextConfigPath, failBuild: utils.build.failBuild })) + !(await hasCorrectNextConfig({ nextConfigPath, failBuild })) ) } diff --git a/helpers/getNextConfig.js b/helpers/getNextConfig.js index 8925d34484..6511aa076b 100644 --- a/helpers/getNextConfig.js +++ b/helpers/getNextConfig.js @@ -3,7 +3,7 @@ const { resolve } = require('path') let nextConfig // Load next.config.js -const getNextConfig = async function (failBuild) { +const getNextConfig = async function (failBuild = defaultFailBuild) { // Memoizes `nextConfig` if (nextConfig !== undefined) { return nextConfig @@ -23,4 +23,8 @@ const getNextConfig = async function (failBuild) { return nextConfig } +const defaultFailBuild = function (message, { error }) { + throw new Error(`${message}\n${error.stack}`) +} + module.exports = getNextConfig diff --git a/index.js b/index.js index 36f13074b9..9c6ab41912 100644 --- a/index.js +++ b/index.js @@ -25,7 +25,7 @@ module.exports = { return failBuild('Could not find a package.json for this project') } - if (await doesNotNeedPlugin({ netlifyConfig, packageJson, utils })) { + if (await doesNotNeedPlugin({ netlifyConfig, packageJson, failBuild })) { return } @@ -46,7 +46,9 @@ module.exports = { constants: { PUBLISH_DIR, FUNCTIONS_SRC = DEFAULT_FUNCTIONS_SRC }, utils, }) { - if (await doesNotNeedPlugin({ netlifyConfig, packageJson, utils })) { + const { failBuild } = utils.build + + if (await doesNotNeedPlugin({ netlifyConfig, packageJson, failBuild })) { return } diff --git a/src/lib/helpers/getI18n.js b/src/lib/helpers/getI18n.js index 80878268d4..817446b68e 100644 --- a/src/lib/helpers/getI18n.js +++ b/src/lib/helpers/getI18n.js @@ -1,5 +1,5 @@ // Get the i1i8n details specified in next.config.js, if any -const getNextConfig = require('./getNextConfig') +const getNextConfig = require('../../../helpers/getNextConfig') const getI18n = async () => { const nextConfig = await getNextConfig() diff --git a/src/lib/helpers/getNextConfig.js b/src/lib/helpers/getNextConfig.js deleted file mode 100644 index 0a34fffee9..0000000000 --- a/src/lib/helpers/getNextConfig.js +++ /dev/null @@ -1,15 +0,0 @@ -// Get next.config.js -const { PHASE_PRODUCTION_BUILD } = require('next/constants') -const { default: loadConfig } = require('next/dist/next-server/server/config') -const { resolve } = require('path') - -let nextConfig - -const getNextConfig = async () => { - // Load next.config.js - // Use same code as https://github.com/vercel/next.js/blob/25488f4a03db30cade4d086ba49cd9a50a2ac02e/packages/next/build/index.ts#L114 - nextConfig = nextConfig || (await loadConfig(PHASE_PRODUCTION_BUILD, resolve('.'))) - return nextConfig -} - -module.exports = getNextConfig diff --git a/src/lib/helpers/getNextDistDir.js b/src/lib/helpers/getNextDistDir.js index f5b9b5603b..2bcf34e9f9 100644 --- a/src/lib/helpers/getNextDistDir.js +++ b/src/lib/helpers/getNextDistDir.js @@ -1,6 +1,6 @@ // Get the NextJS distDir specified in next.config.js const { join } = require('path') -const getNextConfig = require('./getNextConfig') +const getNextConfig = require('../../../helpers/getNextConfig') const getNextDistDir = async () => { const nextConfig = await getNextConfig() diff --git a/src/lib/helpers/getPrerenderManifest.js b/src/lib/helpers/getPrerenderManifest.js index b480d11467..0e0aa7555e 100644 --- a/src/lib/helpers/getPrerenderManifest.js +++ b/src/lib/helpers/getPrerenderManifest.js @@ -1,6 +1,6 @@ const { join } = require('path') const { readJSONSync } = require('fs-extra') -const getNextConfig = require('./getNextConfig') +const getNextConfig = require('../../../helpers/getNextConfig') const getNextDistDir = require('./getNextDistDir') const getDataRouteForRoute = require('./getDataRouteForRoute') const asyncForEach = require('./asyncForEach')