next.js: Package subpath './server.edge' is not defined by "exports"

Verify canary release

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

Provide environment information

Operating System:
      Platform: win32
      Arch: x64
      Version: Windows 10 Enterprise
    Binaries:
      Node: 16.18.1
      npm: N/A
      Yarn: N/A
      pnpm: N/A
    Relevant packages:
      next: 13.3.2-canary.12
      eslint-config-next: 13.3.1
      react: 18.2.0
      react-dom: 18.2.0

Which area(s) of Next.js are affected? (leave empty if unsure)

App directory (appDir: true)

Link to the code that reproduces this issue

https://github.com/medonat/nextjs-revalidate-test

To Reproduce

  1. Clone the repository
  2. npm install
  3. npm run build
  4. npm run start
  5. Open localhost:3000
  6. The cat fact shouldn’t change onreload
  7. Make a POST request: localhost:3000/api/revalidate
  8. There should be an error 500 and no update if you reload localhost:3000
  9. Checkout branch 13.3.0 - and repeat the procedure to see that it worked in 13.3.0

Describe the Bug

ISR does not work. Stale data is displayed after calling revalidate.

Error in console: TypeError: Cannot set properties of undefined (setting 'current') at ue (C:\Users\daniel.hufler\Documents\code\revalidatetest\node_modules\next\dist\compiled\react-dom\cjs\react-dom-server.edge.production.min.js:113:42) at C:\Users\daniel.hufler\Documents\code\revalidatetest\node_modules\next\dist\compiled\react-dom\cjs\react-dom-server.edge.production.min.js:151:127 at new Promise (<anonymous>) at Object.exports.renderToReadableStream (C:\Users\daniel.hufler\Documents\code\revalidatetest\node_modules\next\dist\compiled\react-dom\cjs\react-dom-server.edge.production.min.js:151:53) at C:\Users\daniel.hufler\Documents\code\revalidatetest\node_modules\next\dist\server\node-web-streams-helper.js:195:117 at NextTracerImpl.trace (C:\Users\daniel.hufler\Documents\code\revalidatetest\node_modules\next\dist\server\lib\trace\tracer.js:86:20) at renderToInitialStream (C:\Users\daniel.hufler\Documents\code\revalidatetest\node_modules\next\dist\server\node-web-streams-helper.js:195:37) at C:\Users\daniel.hufler\Documents\code\revalidatetest\node_modules\next\dist\server\app-render\app-render.js:918:92

Expected Behavior

Revalidate should work like it did in previous versions (e.g. 13.3.0)

Which browser are you using? (if relevant)

No response

How are you deploying your application? (if relevant)

next start

About this issue

  • Original URL
  • State: closed
  • Created a year ago
  • Reactions: 11
  • Comments: 24 (11 by maintainers)

Commits related to this issue

Most upvoted comments

Have same error (for next@13.4.0) - Package subpath ‘./server.edge’ is not defined by “exports” - for On-demand Revalidation using res.revalidate([url])

Thanks, I’ve identified the cause and am working on a fix right now.

@jwalcher opening a new one with a minimal reproduction repo will definitely help, thanks!

@shuding Please could someone take another look at this, perhaps through the issue https://github.com/vercel/next.js/issues/50464

The Package subpath './server.edge' is not defined by "exports" error persists during on-demand revalidation when the middleware-invoke flag is set on a path in the app directory (without middleware getting invoked per se during revalidation). This might well be a router issue, but it might also arise later during re-render.

Also still facing this issue with 13.4.0:

Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './server.edge' is not defined by "exports" in /Users/user/Documents/folder/client/frontend/node_modules/react-dom/package.json
    at new NodeError (node:internal/errors:371:5)
    at throwExportsNotFound (node:internal/modules/esm/resolve:453:9)
    at packageExportsResolve (node:internal/modules/esm/resolve:729:3)
    at resolveExports (node:internal/modules/cjs/loader:482:36)
    at Function.Module._findPath (node:internal/modules/cjs/loader:522:31)
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:919:27)
    at /Users/user/Documents/folder/client/frontend/node_modules/next/dist/server/require-hook.js:180:36
    at Function.Module._load (node:internal/modules/cjs/loader:778:27)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18) {
  code: 'ERR_PACKAGE_PATH_NOT_EXPORTED'
}

Error: Invalid response 500
    at NextNodeServer.revalidate (/Users/user/Documents/folder/client/frontend/node_modules/next/dist/server/next-server.js:1208:19)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async Server.<anonymous> (/Users/user/Documents/folder/client/frontend/node_modules/next/dist/server/lib/server-ipc/index.js:54:30)

Running into the same issue on 13.4.1 with the output: 'standalone' setting as well.

Right - it is not the same as the original issue - it’s the same error message that you posted in your comment above and @LotharVM posted in their comment.

After upgrading to canary v13.3.5-canary3, the error changed to

Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './server.edge' is not defined by "exports" in /Users/user/Documents/folder/client/frontend/node_modules/react-dom/package.json
    at new NodeError (node:internal/errors:371:5)
    at throwExportsNotFound (node:internal/modules/esm/resolve:453:9)
    at packageExportsResolve (node:internal/modules/esm/resolve:729:3)
    at resolveExports (node:internal/modules/cjs/loader:482:36)
    at Function.Module._findPath (node:internal/modules/cjs/loader:522:31)
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:919:27)
    at /Users/lothar-bravoure/Documents/_FTP/paradiso/frontend/node_modules/next/dist/server/require-hook.js:180:36
    at Function.Module._load (node:internal/modules/cjs/loader:778:27)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18) {
  code: 'ERR_PACKAGE_PATH_NOT_EXPORTED'

Just in case it helps 😃