Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pnpm workspace support #8782

Closed
rburgst opened this issue Aug 23, 2023 · 2 comments
Closed

pnpm workspace support #8782

rburgst opened this issue Aug 23, 2023 · 2 comments

Comments

@rburgst
Copy link
Contributor

rburgst commented Aug 23, 2023

when trying to create a keystone js project with pnpm where the keystone project is in a sub-directory (workspace), the building fails.

Expected

the build should succeed

Details

Sample Repo: https://github.com/rburgst/keystone-workspace-pnpm-problem

The project was created as follows

mkdir test-pnpm
cd test-pnpm
pnpm create
# then create the `pnpm-workspace.yaml`
pnpm create keystone-app
# name the directory server
cd server
rm -rf yarn.lock node_modules
pnpm install

As the installation fails, update all dependencies to their latest version

pnpm upgrade --interactive --latest

Then apply the fix from #8581 (comment)

Now build the project

node build.js

This produces

...
lots of output
...
even more output
...
Error occurred prerendering page "/init". Read more: https://nextjs.org/docs/messages/prerender-error
TypeError: Cannot read properties of null (reading 'useContext')
    at useContext (/Users/rainer/git/private/test-pnpm/server/node_modules/react/cjs/react.development.js:1618:21)
    at useHtmlContext (/Users/rainer/git/private/test-pnpm/server/node_modules/next/dist/shared/lib/html-context.js:29:43)
    at Html (/Users/rainer/git/private/test-pnpm/server/.keystone/admin/.next/server/chunks/332.js:678:119)
    at renderWithHooks (/Users/rainer/git/private/test-pnpm/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js:5658:16)
    at renderIndeterminateComponent (/Users/rainer/git/private/test-pnpm/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js:5731:15)
    at renderElement (/Users/rainer/git/private/test-pnpm/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js:5946:7)
    at renderNodeDestructiveImpl (/Users/rainer/git/private/test-pnpm/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js:6104:11)
    at renderNodeDestructive (/Users/rainer/git/private/test-pnpm/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js:6076:14)
    at finishClassComponent (/Users/rainer/git/private/test-pnpm/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js:5688:3)
    at renderClassComponent (/Users/rainer/git/private/test-pnpm/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom-server.browser.development.js:5696:3)
- info Generating static pages (15/15)
unhandledRejection ExportError: Export encountered errors on following paths:
        /
        /_error: /404
        /_error: /500
        /init
        /no-access
        /posts
        /posts/[id]
        /posts/create
        /signin
        /tags
        /tags/[id]
        /tags/create
        /users
        /users/[id]
        /users/create
    at /Users/rainer/git/private/test-pnpm/node_modules/.pnpm/next@13.4.19_react-dom@18.2.0_react@18.2.0/node_modules/next/dist/export/index.js:625:19
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async Span.traceAsyncFn (/Users/rainer/git/private/test-pnpm/node_modules/.pnpm/next@13.4.19_react-dom@18.2.0_react@18.2.0/node_modules/next/dist/trace/trace.js:105:20)
    at async /Users/rainer/git/private/test-pnpm/node_modules/.pnpm/next@13.4.19_react-dom@18.2.0_react@18.2.0/node_modules/next/dist/build/index.js:1604:21
    at async Span.traceAsyncFn (/Users/rainer/git/private/test-pnpm/node_modules/.pnpm/next@13.4.19_react-dom@18.2.0_react@18.2.0/node_modules/next/dist/trace/trace.js:105:20)
    at async /Users/rainer/git/private/test-pnpm/node_modules/.pnpm/next@13.4.19_react-dom@18.2.0_react@18.2.0/node_modules/next/dist/build/index.js:1460:17
    at async Span.traceAsyncFn (/Users/rainer/git/private/test-pnpm/node_modules/.pnpm/next@13.4.19_react-dom@18.2.0_react@18.2.0/node_modules/next/dist/trace/trace.js:105:20)
    at async Object.build (/Users/rainer/git/private/test-pnpm/node_modules/.pnpm/next@13.4.19_react-dom@18.2.0_react@18.2.0/node_modules/next/dist/build/index.js:148:29)
    at async build (/Users/rainer/git/private/test-pnpm/node_modules/.pnpm/@keystone-6+core@5.5.1_@prisma+generator-helper@5.2.0/node_modules/@keystone-6/core/scripts/cli/dist/keystone-6-core-scripts-cli.cjs.dev.js:535:3)
    at async /Users/rainer/git/private/test-pnpm/server/build.js:6:3 {
  code: 'NEXT_EXPORT_ERROR'
}

Context

node -v
v18.16.1

Sample repo: https://github.com/rburgst/keystone-workspace-pnpm-problem

@marekryb
Copy link
Contributor

I am using keystone in pnpm workspace for some time now.

Tried your repo, but it does not reproduce on my end:

exar@exar:~/test$ git clone https://github.com/rburgst/keystone-workspace-pnpm-problem.git
Cloning into 'keystone-workspace-pnpm-problem'...
remote: Enumerating objects: 23, done.
remote: Counting objects: 100% (23/23), done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 23 (delta 2), reused 23 (delta 2), pack-reused 0
Receiving objects: 100% (23/23), 95.73 KiB | 7.98 MiB/s, done.
Resolving deltas: 100% (2/2), done.
exar@exar:~/test$ cd keystone-workspace-pnpm-problem/
exar@exar:~/test/keystone-workspace-pnpm-problem$ pnpm install
Scope: all 2 workspace projects
Lockfile is up to date, resolution step is skipped
Packages: +882
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Packages are hard linked from the content-addressable store to the virtual store.
  Content-addressable store is at: /home/exar/.local/share/pnpm/store/v3
  Virtual store is at:             node_modules/.pnpm

   ╭──────────────────────────────────────────────────────────────────╮
   │                                                                  │
   │                Update available! 8.6.5 → 8.6.12.                 │
   │   Changelog: https://github.com/pnpm/pnpm/releases/tag/v8.6.12   │
   │         Run a script from: https://pnpm.io/installation          │
   │                                                                  │
   │      Follow @pnpmjs for updates: https://twitter.com/pnpmjs      │
   │                                                                  │
   ╰──────────────────────────────────────────────────────────────────╯

Downloading registry.npmjs.org/next/13.4.19: 13 MB/13 MB, done
Downloading registry.npmjs.org/@next/swc-linux-x64-gnu/13.4.19: 36.2 MB/36.2 MB, done
Downloading registry.npmjs.org/@next/swc-linux-x64-musl/13.4.19: 42.8 MB/42.8 MB, done
Progress: resolved 882, reused 804, downloaded 78, added 882, done
node_modules/.pnpm/@prisma+engines@5.2.0/node_modules/@prisma/engines: Running postinstall script, done in 2.3s
node_modules/.pnpm/prisma@5.2.0/node_modules/prisma: Running preinstall script, done in 39ms
node_modules/.pnpm/@prisma+client@5.2.0_prisma@5.2.0/node_modules/@prisma/client: Running postinstall script, done in 572ms
server postinstall$ keystone build --no-ui --frozen
│ ✨ GraphQL and Prisma schemas are up to date
└─ Done in 2.5s
The integrity of 9398 files was checked. This might have caused installation to take longer.
Done in 17.8s
exar@exar:~/test/keystone-workspace-pnpm-problem$ cd server/
exar@exar:~/test/keystone-workspace-pnpm-problem/server$ pnpm buil
 ERR_PNPM_RECURSIVE_EXEC_FIRST_FAIL  Command failed with ENOENT: buil
spawn buil ENOENT

Command "buil" not found. Did you mean "pnpm run build"?
exar@exar:~/test/keystone-workspace-pnpm-problem/server$ pnpm build

> keystone-app@1.0.2 build /home/exar/test/keystone-workspace-pnpm-problem/server
> node build.js

✨ Generated GraphQL and Prisma schemas
✨ Generating Admin UI code
✨ Building Admin UI
- warn You have enabled experimental feature (appDir) in next.config.js.
- warn Experimental features are not covered by semver, and may cause unexpected or broken application behavior. Use at your own risk.

- info Skipping validation of types
- info Skipping linting
- info Creating an optimized production build  
- info Compiled successfully
- info Collecting page data  
- info Generating static pages (15/15)
- info Finalizing page optimization  

Route (pages)                              Size     First Load JS
┌ ○ /                                      1.62 kB         484 kB
├   /_app                                  0 B             482 kB
├ ○ /404                                   181 B           483 kB
├ ○ /init                                  6.45 kB         489 kB
├ ○ /no-access                             405 B           483 kB
├ ○ /posts                                 241 B           491 kB
├ ○ /posts/[id]                            245 B           487 kB
├ ○ /posts/create                          1.45 kB         484 kB
├ ○ /signin                                1.56 kB         484 kB
├ ○ /tags                                  240 B           491 kB
├ ○ /tags/[id]                             244 B           487 kB
├ ○ /tags/create                           1.44 kB         484 kB
├ ○ /users                                 239 B           491 kB
├ ○ /users/[id]                            244 B           487 kB
└ ○ /users/create                          1.45 kB         484 kB
+ First Load JS shared by all              482 kB
  ├ chunks/framework-e0110cf9c7f07544.js   45.1 kB
  ├ chunks/main-23178cc585017280.js        28.6 kB
  ├ chunks/pages/_app-fa5d50b76561651a.js  408 kB
  └ chunks/webpack-880e48e2fc817058.js     1 kB

○  (Static)  automatically rendered as static HTML (uses no initial props)

exar@exar:~/test/keystone-workspace-pnpm-problem/server$ pnpm upgrade --interactive --latest
✔ Choose which packages to update (Press <space> to select, <a> to toggle all, <i> to invert selection) · typescript
 WARN  deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
Downloading registry.npmjs.org/typescript/5.2.2: 7.23 MB/7.23 MB, done
..                                       |  +23   -4 ++-
..                                       | Progress: resolved 929, reused 878, downloaded 23, added 23, done

dependencies:
- typescript 5.1.6
+ typescript 5.2.2

Done in 25.6s
exar@exar:~/test/keystone-workspace-pnpm-problem/server$ 
exar@exar:~/test/keystone-workspace-pnpm-problem/server$ pnpm build

> keystone-app@1.0.2 build /home/exar/test/keystone-workspace-pnpm-problem/server
> node build.js

✨ Generated GraphQL and Prisma schemas
✨ Generating Admin UI code
✨ Building Admin UI
- warn You have enabled experimental feature (appDir) in next.config.js.
- warn Experimental features are not covered by semver, and may cause unexpected or broken application behavior. Use at your own risk.

- info Skipping validation of types
- info Skipping linting
- info Creating an optimized production build  
- info Compiled successfully
- info Collecting page data  
- info Generating static pages (15/15)
- info Finalizing page optimization  

Route (pages)                              Size     First Load JS
┌ ○ /                                      1.62 kB         484 kB
├   /_app                                  0 B             482 kB
├ ○ /404                                   181 B           483 kB
├ ○ /init                                  6.45 kB         489 kB
├ ○ /no-access                             405 B           483 kB
├ ○ /posts                                 241 B           491 kB
├ ○ /posts/[id]                            245 B           487 kB
├ ○ /posts/create                          1.45 kB         484 kB
├ ○ /signin                                1.56 kB         484 kB
├ ○ /tags                                  240 B           491 kB
├ ○ /tags/[id]                             244 B           487 kB
├ ○ /tags/create                           1.44 kB         484 kB
├ ○ /users                                 239 B           491 kB
├ ○ /users/[id]                            244 B           487 kB
└ ○ /users/create                          1.45 kB         484 kB
+ First Load JS shared by all              482 kB
  ├ chunks/framework-e0110cf9c7f07544.js   45.1 kB
  ├ chunks/main-23178cc585017280.js        28.6 kB
  ├ chunks/pages/_app-fa5d50b76561651a.js  408 kB
  └ chunks/webpack-880e48e2fc817058.js     1 kB

○  (Static)  automatically rendered as static HTML (uses no initial props)

exar@exar:~/test/keystone-workspace-pnpm-problem/server$ node build.js
✨ Generated GraphQL and Prisma schemas
✨ Generating Admin UI code
✨ Building Admin UI
- warn You have enabled experimental feature (appDir) in next.config.js.
- warn Experimental features are not covered by semver, and may cause unexpected or broken application behavior. Use at your own risk.

- info Skipping validation of types
- info Skipping linting
- info Creating an optimized production build  
- info Compiled successfully
- info Collecting page data  
- info Generating static pages (15/15)
- info Finalizing page optimization  

Route (pages)                              Size     First Load JS
┌ ○ /                                      1.62 kB         484 kB
├   /_app                                  0 B             482 kB
├ ○ /404                                   181 B           483 kB
├ ○ /init                                  6.45 kB         489 kB
├ ○ /no-access                             405 B           483 kB
├ ○ /posts                                 241 B           491 kB
├ ○ /posts/[id]                            245 B           487 kB
├ ○ /posts/create                          1.45 kB         484 kB
├ ○ /signin                                1.56 kB         484 kB
├ ○ /tags                                  240 B           491 kB
├ ○ /tags/[id]                             244 B           487 kB
├ ○ /tags/create                           1.44 kB         484 kB
├ ○ /users                                 239 B           491 kB
├ ○ /users/[id]                            244 B           487 kB
└ ○ /users/create                          1.45 kB         484 kB
+ First Load JS shared by all              482 kB
  ├ chunks/framework-e0110cf9c7f07544.js   45.1 kB
  ├ chunks/main-23178cc585017280.js        28.6 kB
  ├ chunks/pages/_app-fa5d50b76561651a.js  408 kB
  └ chunks/webpack-880e48e2fc817058.js     1 kB

○  (Static)  automatically rendered as static HTML (uses no initial props)

@rburgst
Copy link
Contributor Author

rburgst commented Aug 31, 2023

I think this was due to an older version of pnpm, with the latest one I cannot repro it anymore. Thanks for the feedback.

@rburgst rburgst closed this as completed Aug 31, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants