next.js: getStaticProps crashes on next 12.2.0 when building

Verify canary release

  • I verified that the issue exists in the latest Next.js canary release

Provide environment information

Operating System: Platform: darwin Arch: arm64 Version: Darwin Kernel Version 21.5.0: Tue Apr 26 21:08:37 PDT 2022; root:xnu-8020.121.3~4/RELEASE_ARM64_T6000 Binaries: Node: 18.2.0 npm: 8.5.5 Yarn: 1.22.19 pnpm: 7.3.0 Relevant packages: next: 12.2.0 eslint-config-next: 12.1.6 react: 18.1.0 react-dom: 18.1.0

What browser are you using? (if relevant)

not relevant

How are you deploying your application? (if relevant)

No response

Describe the Bug

Only when the export const getStaticProps = () => { ... } function is added, the pnpm build crashes displaying the following error.

Screen Shot 2022-06-29 at 09 33 05

Code

Screen Shot 2022-06-29 at 09 33 42
  • Note: fetcher is a custom wrapper for the native fetch API that nextjs pollyfills.

Expected Behavior

Build shouldn’t crash and getStaticProps should be working as expected

Link to reproduction

unable to reproduce

To Reproduce

  1. boot starter ts project
  2. install chakra ui and set it up
  3. add getStaticProps in any page
  4. run yarn build

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Reactions: 3
  • Comments: 17 (2 by maintainers)

Commits related to this issue

Most upvoted comments

I first experienced a problem with 12.2.0 when our CI pipeline attempted to next start after a successful build. Here’s the error from the attempted launch:

Jun 29 04:52:44 ip-10-11-18-224 web: > @<redacted>@0.1.0 start
Jun 29 04:52:44 ip-10-11-18-224 web: > next start
Jun 29 04:52:44 ip-10-11-18-224 web: warn  - You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env
Jun 29 04:52:44 ip-10-11-18-224 web: warn  - You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env
Jun 29 04:52:44 ip-10-11-18-224 web: ready - started server on 0.0.0.0:8080, url: http://localhost:8080
Jun 29 04:52:44 ip-10-11-18-224 web: TypeError: Cannot convert undefined or null to object
Jun 29 04:52:44 ip-10-11-18-224 web: at Function.keys (<anonymous>)
Jun 29 04:52:44 ip-10-11-18-224 web: at NextNodeServer.getEdgeFunctions (/var/app/current/node_modules/next/dist/server/next-server.js:656:23)
Jun 29 04:52:44 ip-10-11-18-224 web: at NextNodeServer.generateCatchAllMiddlewareRoute (/var/app/current/node_modules/next/dist/server/next-server.js:991:22)
Jun 29 04:52:44 ip-10-11-18-224 web: at NextNodeServer.generateRoutes (/var/app/current/node_modules/next/dist/server/base-server.js:464:41)
Jun 29 04:52:44 ip-10-11-18-224 web: at new Server (/var/app/current/node_modules/next/dist/server/base-server.js:109:48)
Jun 29 04:52:44 ip-10-11-18-224 web: at new NextNodeServer (/var/app/current/node_modules/next/dist/server/next-server.js:62:9)
Jun 29 04:52:44 ip-10-11-18-224 web: at NextServer.createServer (/var/app/current/node_modules/next/dist/server/next.js:128:16)
Jun 29 04:52:44 ip-10-11-18-224 web: at async /var/app/current/node_modules/next/dist/server/next.js:137:31

Since that time, a new project, created with npx create-next-app@latest will not build, producing @AlvaroAquijeDiaz 's error message from above.

Reproducing this bug does not require step 2 above in 'To Reproduce"

Current workaround: specify "next": "12.1" in package.json

This appears fixed in 12.3.1. My .next/server/middleware-manifest.json was moved to version 2 when I ran next build after upgrading, and the file includes the functions block.

{
  "sortedMiddleware": [],
  "middleware": {},
  "functions": {},
  "version": 2
}

I’m not an expert in this code, but I wonder if perhaps:

  • The breakage occurred here, since this appears to have the effect of no longer writing a functions property to the middleware manifest (.next/server/middleware-manifest.json)
  • This was fixed here, which seems to have reintroduced the functions property to the middleware manifest.

Someone with more knowledge of the code might be able to verify if these theories are true.

In any case, it does seem to work with the latest version on canary right now in git, so something appears to have fixed the problem.