Closed trappar closed 6 months ago
I've been digging at this trying to replicate the issue without using a next build and have come up with nothing helpful, but in the process I found something very interesting...
Simply manually unarchiving the files from the turbo cache .tar.zst
file yields an identical match to the original output files. This works in my reproduction repo and my big complicated monorepo project.
The command I'm using to unarchive the files is: tar --use-compress-program=unzstd -xvf xxx.tar.zst
This manually unarchived version also works perfectly. No server errors like when I try to run a server based on the files restored from turbo's cache.
So this tells me that the issue is probably one or both of:
Just quickly looking at the code I feel like topologically_restore_symlinks
stands out as a potential source for this bug, so I tried augmenting the next build like so:
"build": "next build && cp -RL .next .next-deref && rm -rf .next && mv .next-deref .next"
The idea being that by copying the files and following symlinks, the resulting build would be devoid of both hard links (due to copying the files) and symlinks (due to the -L
option).
The results here at least partially confirm my hunch. Before making this change in my big monorepo project the diff showed both:
After making this change to copy the files and dereference links, all the files which were present in the original but not in the cached version were fixed and the diff now only shows loads of files which are only present in the cached version.
I was hoping that this would at least get things working again (and could maybe be a temporary workaround), however, doing the file copying seems to screw up the next build. Trying to run the server using the copied/dereferenced version using either the original files or the turbo cached version errors out with:
node:internal/modules/cjs/loader:1147
throw err;
^
Error: Cannot find module 'styled-jsx/package.json'
Require stack:
- /app/apps/[redacted]/node_modules/next/dist/server/require-hook.js
- /app/apps/[redacted]/node_modules/next/dist/server/next.js
- /app/apps/[redacted]/server.js
at Module._resolveFilename (node:internal/modules/cjs/loader:1144:15)
at resolve (node:internal/modules/helpers:187:19)
at Object.<anonymous> (/app/apps/[redacted]/node_modules/next/dist/server/require-hook.js:38:32)
at Module._compile (node:internal/modules/cjs/loader:1376:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1435:10)
at Module.load (node:internal/modules/cjs/loader:1207:32)
at Module._load (node:internal/modules/cjs/loader:1023:12)
at Module.require (node:internal/modules/cjs/loader:1235:19)
at require (node:internal/modules/helpers:176:18)
at Object.<anonymous> (/app/apps/[redacted]/node_modules/next/dist/server/next.js:25:1) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'/app/apps/[redacted]/node_modules/next/dist/server/require-hook.js',
'/app/apps/[redacted]/node_modules/next/dist/server/next.js',
'/app/apps/[redacted]/server.js'
]
}
So to summarize, this issue is almost certainly due to how Turbo unarchives its caches and handles the output files. I'm still trying to find the precise file/directory conditions which cause these issues.
Just went through tested turbo versions to see if there was a point in the past where this issue didn't exist and then where it appeared. Here's a timeline of what I found:
1.10.16
: Cache matches original files exactly.1.11.0
- 1.11.2
: Couldn't test due error "Error with daemon: server is unavailable".1.11.3
: Still getting errors from turbo, but differences between original files / cached files start to appear.1.12.0
- 1.12.4
: No errors from turbo, differences between original files / cached files observed.I looked through the 1.11.0 changes and this one stuck out to me: https://github.com/vercel/turbo/pull/6662
I tried downgrading my monorepo project to 1.10.16
. On that version everything is working perfectly and the diff shows an exact match between the original and cached versions of my .next
directory.
Thanks for the exceptionally detailed write-up! I am going to work through some of this and see if I can identify a fix.
Hey, had a look at the code directly and diff you identified and tried to write some tests but can't trigger the behaviour. Your repro-repo is private I think (I am getting a 404). Mind flipping it to public?
D'oh... yeah that was a mistake. It's public now.
Any update? Have you been able to reproduce the issue in the repo?
Possibly related to https://github.com/vercel/turbo/issues/6823. See if you can replicate the error message from that issue on Turbo 1.11.
@trappar Again, thanks for the reproduction and detailed write up. It made finding the issue a lot easier.
https://github.com/vercel/turbo/pull/7628 should fix this.
Awesome!! Is there a way I can install that PR's version locally in my big monorepo project so I can do a more thorough test? Is there a snapshot version or something I can use?
can install that PR's version locally
You can checkout that PR and cargo build -p turbo
and then use that binary with --skip-infer
to test, but that requires getting a dev environment setup.
I'm cutting a canary you can use in your project by just changing the turbo
version. Once this workflow finishes you can use 1.12.5-canary.1
which will have that PR in it.
Just ran my tests against my monorepo project and I can confirm that this fixed part of the issue - the part that showed up in my repro repo, but this doesn't actually fix the bulk of the problems.
Would you like me to open a new issue?
I'm honestly not sure if I'll be able to make a repro of the issues I'm seeing, but here's the diff which I assembled using a similar script to the one from my repro repo:
Only in output/force-build/standalone/node_modules/.pnpm/@emotion+react@11.11.1_@types+react@18.2.51_react@18.3.0-canary-627b7abd6-20230911/node_modules/@emotion: serialize
Only in output/force-build/standalone/node_modules/.pnpm/@emotion+react@11.11.1_@types+react@18.2.51_react@18.3.0-canary-627b7abd6-20230911/node_modules/@emotion: use-insertion-effect-with-fallbacks
Only in output/force-build/standalone/node_modules/.pnpm/@emotion+react@11.11.1_@types+react@18.2.51_react@18.3.0-canary-627b7abd6-20230911/node_modules/@emotion: utils
Only in output/force-build/standalone/node_modules/.pnpm/@emotion+react@11.11.1_@types+react@18.2.51_react@18.3.0-canary-627b7abd6-20230911/node_modules/@emotion: weak-memoize
Only in output/force-build/standalone/node_modules/.pnpm/@emotion+react@11.11.1_@types+react@18.2.51_react@18.3.0-canary-627b7abd6-20230911/node_modules: hoist-non-react-statics
Only in output/force-build/standalone/node_modules/.pnpm/@emotion+styled@11.11.0_@emotion+react@11.11.1_@types+react@18.2.51_react@18.3.0-canary-627b7abd6-20230911/node_modules/@emotion: use-insertion-effect-with-fallbacks
Only in output/force-build/standalone/node_modules/.pnpm/@emotion+styled@11.11.0_@emotion+react@11.11.1_@types+react@18.2.51_react@18.3.0-canary-627b7abd6-20230911/node_modules/@emotion: utils
Only in output/force-build/standalone/node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.3.0/node_modules/@formatjs: icu-skeleton-parser
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+dialog@3.5.0_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules/@react-aria: focus
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+dialog@3.5.0_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules/@react-aria: overlays
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+dialog@3.5.0_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules/@react-aria: utils
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+focus@3.11.0_react@18.3.0-canary-627b7abd6-20230911/node_modules/@react-aria: interactions
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+focus@3.11.0_react@18.3.0-canary-627b7abd6-20230911/node_modules/@react-aria: utils
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+focus@3.11.0_react@18.3.0-canary-627b7abd6-20230911/node_modules/@swc: helpers
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+focus@3.11.0_react@18.3.0-canary-627b7abd6-20230911/node_modules: clsx
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+i18n@3.7.0_react@18.3.0-canary-627b7abd6-20230911/node_modules/@react-aria: ssr
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+interactions@3.14.0_react@18.3.0-canary-627b7abd6-20230911/node_modules/@react-aria: utils
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+overlays@3.13.0_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules/@react-aria: ssr
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+overlays@3.13.0_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules/@react-aria: utils
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+overlays@3.13.0_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules/@react-aria: visually-hidden
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+overlays@3.13.0_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules: react
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+utils@3.15.0_react@18.3.0-canary-627b7abd6-20230911/node_modules/@react-stately: utils
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+utils@3.15.0_react@18.3.0-canary-627b7abd6-20230911/node_modules: clsx
Only in output/force-build/standalone/node_modules/.pnpm/@rollup+plugin-commonjs@24.0.0_rollup@2.78.0/node_modules/@rollup: pluginutils
Only in output/force-build/standalone/node_modules/.pnpm/@rollup+plugin-commonjs@24.0.0_rollup@2.78.0/node_modules: commondir
Only in output/force-build/standalone/node_modules/.pnpm/@rollup+plugin-commonjs@24.0.0_rollup@2.78.0/node_modules: estree-walker
Only in output/force-build/standalone/node_modules/.pnpm/@rollup+plugin-commonjs@24.0.0_rollup@2.78.0/node_modules: glob
Only in output/force-build/standalone/node_modules/.pnpm/@rollup+plugin-commonjs@24.0.0_rollup@2.78.0/node_modules: is-reference
Only in output/force-build/standalone/node_modules/.pnpm/@rollup+pluginutils@5.0.4_rollup@2.78.0/node_modules: estree-walker
Only in output/force-build/standalone/node_modules/.pnpm/@sentry+nextjs@7.86.0_next@14.0.3_react@18.3.0-canary-627b7abd6-20230911_webpack@5.89.0/node_modules/@sentry: node
Only in output/force-build/standalone/node_modules/.pnpm/@sentry+nextjs@7.86.0_next@14.0.3_react@18.3.0-canary-627b7abd6-20230911_webpack@5.89.0/node_modules/@sentry: utils
Only in output/force-build/standalone/node_modules/.pnpm/@sentry+nextjs@7.86.0_next@14.0.3_react@18.3.0-canary-627b7abd6-20230911_webpack@5.89.0/node_modules: chalk
Only in output/force-build/standalone/node_modules/.pnpm/@sentry+nextjs@7.86.0_next@14.0.3_react@18.3.0-canary-627b7abd6-20230911_webpack@5.89.0/node_modules: next
Only in output/force-build/standalone/node_modules/.pnpm/@sentry+nextjs@7.86.0_next@14.0.3_react@18.3.0-canary-627b7abd6-20230911_webpack@5.89.0/node_modules: resolve
Only in output/force-build/standalone/node_modules/.pnpm/@sentry+nextjs@7.86.0_next@14.0.3_react@18.3.0-canary-627b7abd6-20230911_webpack@5.89.0/node_modules: rollup
Only in output/force-build/standalone/node_modules/.pnpm/@webassemblyjs+ast@1.11.6/node_modules/@webassemblyjs: helper-numbers
Only in output/force-build/standalone/node_modules/.pnpm/@webassemblyjs+wasm-edit@1.11.6/node_modules/@webassemblyjs: wasm-gen
Only in output/force-build/standalone/node_modules/.pnpm/@webassemblyjs+wasm-edit@1.11.6/node_modules/@webassemblyjs: wasm-opt
Only in output/force-build/standalone/node_modules/.pnpm/next@14.0.3_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules: postcss
Only in output/force-build/standalone/node_modules/.pnpm/next@14.0.3_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules: react
Only in output/force-build/standalone/node_modules/.pnpm/next@14.0.3_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules: react-dom
Only in output/force-build/standalone/node_modules/.pnpm/next@14.0.3_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules: styled-jsx
diff: output/force-build/standalone/node_modules/.pnpm/node_modules/caniuse-lite: No such file or directory
Only in output/force-build/standalone/node_modules/.pnpm/[redacted]@30.1.4_@emotion+react@11.11.1_@emotion+styled@11.11.0_react-dom@18.3.0-canary-627_vcflnxxyig2c6kyanflnydo4p4/node_modules: react
Only in output/force-build/standalone/node_modules/.pnpm/[redacted]@30.1.4_@emotion+react@11.11.1_@emotion+styled@11.11.0_react-dom@18.3.0-canary-627_vcflnxxyig2c6kyanflnydo4p4/node_modules: react-dom
Only in output/force-build/standalone/node_modules/.pnpm/[redacted]@30.1.4_@emotion+react@11.11.1_@emotion+styled@11.11.0_react-dom@18.3.0-canary-627_vcflnxxyig2c6kyanflnydo4p4/node_modules: react-slick
Only in output/force-build/standalone/node_modules/.pnpm/[redacted]@30.1.4_@emotion+react@11.11.1_@emotion+styled@11.11.0_react-dom@18.3.0-canary-627_vcflnxxyig2c6kyanflnydo4p4/node_modules: react-toggle-button
Only in output/force-build/standalone/node_modules/.pnpm/[redacted]@30.1.4_@emotion+react@11.11.1_@emotion+styled@11.11.0_react-dom@18.3.0-canary-627_vcflnxxyig2c6kyanflnydo4p4/node_modules: react-transition-group
Only in output/force-build/standalone/node_modules/.pnpm/react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules: react
Only in output/force-build/standalone/node_modules/.pnpm/react-slick@0.29.0_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules: react
Interesting. Are those diffs a regression compared to the previous canary or are those files missing in the cache hit on both 1.12.5-canary.0
and 1.12.5-canary.1
? I'll reopen this issue to keep discussion in one place.
Are the files missing from the cache hit all just regular files?
As far as I can tell those diffs are a subset of the diffs that I originally saw when testing 1.12.4. I'll downgrade to 1.12.5-canary.0 and try rerunning. Will update this comment once I have those results.
I think there are two distinct bugs causing these issues. The patterns I saw seemed to be something like:
Update:
Here's the diff output on 1.12.5-canary.0:
Only in output/cache-hit-build/standalone/apps/[redacted]/node_modules/swiper: components-sha
Only in output/cache-hit-build/standalone/apps/[redacted]/node_modules/swiper/core: breakpoin
Only in output/cache-hit-build/standalone/apps/[redacted]/node_modules/swiper/core: check-ove
Only in output/cache-hit-build/standalone/apps/[redacted]/node_modules/swiper/core: grab-curs
Only in output/cache-hit-build/standalone/apps/[redacted]/node_modules/swiper/core/modules: o
Only in output/cache-hit-build/standalone/apps/[redacted]/node_modules/swiper/core/modules: r
Only in output/cache-hit-build/standalone/apps/[redacted]/node_modules/swiper/core: transitio
Only in output/cache-hit-build/standalone/apps/[redacted]/node_modules/swiper/modules: autopl
Only in output/cache-hit-build/standalone/apps/[redacted]/node_modules/swiper/modules: contro
Only in output/cache-hit-build/standalone/apps/[redacted]/node_modules/swiper/modules: effect
Only in output/cache-hit-build/standalone/apps/[redacted]/node_modules/swiper/modules: free-m
Only in output/cache-hit-build/standalone/apps/[redacted]/node_modules/swiper/modules: hash-n
Only in output/cache-hit-build/standalone/apps/[redacted]/node_modules/swiper/modules: histor
Only in output/cache-hit-build/standalone/apps/[redacted]/node_modules/swiper/modules: keyboa
Only in output/cache-hit-build/standalone/apps/[redacted]/node_modules/swiper/modules: manipu
Only in output/cache-hit-build/standalone/apps/[redacted]/node_modules/swiper/modules: mousew
Only in output/cache-hit-build/standalone/apps/[redacted]/node_modules/swiper/modules: naviga
Only in output/cache-hit-build/standalone/apps/[redacted]/node_modules/swiper/modules: pagina
Only in output/cache-hit-build/standalone/apps/[redacted]/node_modules/swiper/modules: parall
Only in output/cache-hit-build/standalone/apps/[redacted]/node_modules/swiper/modules: scroll
Only in output/cache-hit-build/standalone/apps/[redacted]/node_modules/swiper/modules: virtua
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@axe-core+react@4.6.0/node_modules/@axe-core: re
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@babel+runtime@7.23.2/node_modules/@babel: runti
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@babel+runtime@7.23.8/node_modules/@babel: runti
Only in output/cache-hit-build/standalone/node_modules/.pnpm: @contentful+rich-text-react-renderer@15.16.3_re
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@datadog+browser-core@4.42.2/node_modules: @data
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@datadog+browser-rum-core@4.42.2/node_modules: @
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@datadog+browser-rum@4.42.2/node_modules: @datad
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@emotion+cache@11.11.0/node_modules/@emotion: ca
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@emotion+is-prop-valid@1.2.1/node_modules: @emot
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@emotion+memoize@0.8.1/node_modules/@emotion: me
Only in output/cache-hit-build/standalone/node_modules/.pnpm: @emotion+react@11.11.1_@types+react@18.2.51_rea
Only in output/force-build/standalone/node_modules/.pnpm/@emotion+react@11.11.1_@types+react@18.2.51_react@18.3.0-canary-627b7abd6-20230911/node_modules/@emotion: serialize
Only in output/force-build/standalone/node_modules/.pnpm/@emotion+react@11.11.1_@types+react@18.2.51_react@18.3.0-canary-627b7abd6-20230911/node_modules/@emotion: use-insertion-effect-with-fallbacks
Only in output/force-build/standalone/node_modules/.pnpm/@emotion+react@11.11.1_@types+react@18.2.51_react@18.3.0-canary-627b7abd6-20230911/node_modules/@emotion: utils
Only in output/force-build/standalone/node_modules/.pnpm/@emotion+react@11.11.1_@types+react@18.2.51_react@18.3.0-canary-627b7abd6-20230911/node_modules/@emotion: weak-memoize
Only in output/force-build/standalone/node_modules/.pnpm/@emotion+react@11.11.1_@types+react@18.2.51_react@18.3.0-canary-627b7abd6-20230911/node_modules: hoist-non-react-statics
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@emotion+sheet@1.2.2/node_modules/@emotion: shee
Only in output/cache-hit-build/standalone/node_modules/.pnpm: @emotion+styled@11.11.0_@emotion+react@11.11.1_
Only in output/force-build/standalone/node_modules/.pnpm/@emotion+styled@11.11.0_@emotion+react@11.11.1_@types+react@18.2.51_react@18.3.0-canary-627b7abd6-20230911/node_modules/@emotion: use-insertion-effect-with-fallbacks
Only in output/force-build/standalone/node_modules/.pnpm/@emotion+styled@11.11.0_@emotion+react@11.11.1_@types+react@18.2.51_react@18.3.0-canary-627b7abd6-20230911/node_modules/@emotion: utils
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@emotion+unitless@0.8.1/node_modules/@emotion: u
Only in output/cache-hit-build/standalone/node_modules/.pnpm: @emotion+use-insertion-effect-with-fallbacks@1.
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@emotion+utils@1.2.1/node_modules/@emotion: util
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@emotion+weak-memoize@0.3.1/node_modules: @emoti
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@esbuild+darwin-arm64@0.17.19/node_modules: @esb
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@formatjs+fast-memoize@2.0.1/node_modules: @form
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.3.0: node_m
Only in output/force-build/standalone/node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.3.0/node_modules/@formatjs: icu-skeleton-parser
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@formatjs+icu-skeleton-parser@1.3.18: node_modul
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@internationalized+date@3.1.0/node_modules: @int
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@internationalized+date@3.1.0/node_modules/@swc/helpers: l
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@internationalized+message@3.1.0/node_modules: @
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@internationalized+number@3.2.0/node_modules: @i
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@internationalized+string@3.1.0/node_modules: @i
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@jridgewell+resolve-uri@3.1.1/node_modules: @jri
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@jridgewell+source-map@0.3.5/node_modules: @jrid
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@jridgewell+trace-mapping@0.3.19/node_modules: @
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@opentelemetry+api@1.6.0/node_modules: @opentele
Only in output/cache-hit-build/standalone/node_modules/.pnpm: @react-aria+dialog@3.5.0_react-dom@18.3.0-canar
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+dialog@3.5.0_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules/@react-aria: focus
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+dialog@3.5.0_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules/@react-aria: overlays
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+dialog@3.5.0_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules/@react-aria: utils
Only in output/cache-hit-build/standalone/node_modules/.pnpm: @react-aria+focus@3.11.0_react@18.3.0-canary-62
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+focus@3.11.0_react@18.3.0-canary-627b7abd6-20230911/node_modules/@react-aria: interactions
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+focus@3.11.0_react@18.3.0-canary-627b7abd6-20230911/node_modules/@react-aria: utils
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+focus@3.11.0_react@18.3.0-canary-627b7abd6-20230911/node_modules: @swc
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+focus@3.11.0_react@18.3.0-canary-627b7abd6-20230911/node_modules: clsx
Only in output/cache-hit-build/standalone/node_modules/.pnpm: @react-aria+i18n@3.7.0_react@18.3.0-canary-627b
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+i18n@3.7.0_react@18.3.0-canary-627b7abd6-20230911/node_modules/@react-aria: ssr
Only in output/cache-hit-build/standalone/node_modules/.pnpm: @react-aria+interactions@3.14.0_react@18.3.0-ca
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+interactions@3.14.0_react@18.3.0-canary-627b7abd6-20230911/node_modules/@react-aria: utils
Only in output/cache-hit-build/standalone/node_modules/.pnpm: @react-aria+overlays@3.13.0_react-dom@18.3.0-ca
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+overlays@3.13.0_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules/@react-aria: ssr
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+overlays@3.13.0_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules/@react-aria: utils
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+overlays@3.13.0_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules/@react-aria: visually-hidden
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+overlays@3.13.0_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules: react
Only in output/cache-hit-build/standalone/node_modules/.pnpm: @react-aria+ssr@3.5.0_react@18.3.0-canary-627b7
Only in output/cache-hit-build/standalone/node_modules/.pnpm: @react-aria+utils@3.15.0_react@18.3.0-canary-62
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+utils@3.15.0_react@18.3.0-canary-627b7abd6-20230911/node_modules: @react-stately
Only in output/force-build/standalone/node_modules/.pnpm/@react-aria+utils@3.15.0_react@18.3.0-canary-627b7abd6-20230911/node_modules: clsx
Only in output/cache-hit-build/standalone/node_modules/.pnpm: @react-aria+visually-hidden@3.7.0_react@18.3.0-
Only in output/cache-hit-build/standalone/node_modules/.pnpm: @react-stately+utils@3.6.0_react@18.3.0-canary-
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@rollup+plugin-commonjs@24.0.0_rollup@2.78.0: no
Only in output/force-build/standalone/node_modules/.pnpm/@rollup+plugin-commonjs@24.0.0_rollup@2.78.0/node_modules/@rollup: pluginutils
Only in output/force-build/standalone/node_modules/.pnpm/@rollup+plugin-commonjs@24.0.0_rollup@2.78.0/node_modules: commondir
Only in output/force-build/standalone/node_modules/.pnpm/@rollup+plugin-commonjs@24.0.0_rollup@2.78.0/node_modules: estree-walker
Only in output/force-build/standalone/node_modules/.pnpm/@rollup+plugin-commonjs@24.0.0_rollup@2.78.0/node_modules: glob
Only in output/force-build/standalone/node_modules/.pnpm/@rollup+plugin-commonjs@24.0.0_rollup@2.78.0/node_modules: is-reference
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@rollup+plugin-commonjs@24.0.0_rollup@2.78.0/node_modules/magic-string: d
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@rollup+pluginutils@5.0.4_rollup@2.78.0: node_mo
Only in output/force-build/standalone/node_modules/.pnpm/@rollup+pluginutils@5.0.4_rollup@2.78.0/node_modules: estree-walker
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@sentry+core@7.86.0/node_modules/@sentry/core: c
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@sentry+integrations@7.86.0/node_modules: @sentr
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@sentry+integrations@7.86.0/node_modules/@sentry/core: c
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@sentry+integrations@7.86.0/node_modules/localforage: dis
Only in output/cache-hit-build/standalone/node_modules/.pnpm: @sentry+nextjs@7.86.0_next@14.0.3_react@18.3.0-
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@sentry+nextjs@7.86.0_next@14.0.3_react@18.3.0-canary-627b7abd6-20230911_webpack@5.89.0/node_modules/@sentry/core: c
Only in output/force-build/standalone/node_modules/.pnpm/@sentry+nextjs@7.86.0_next@14.0.3_react@18.3.0-canary-627b7abd6-20230911_webpack@5.89.0/node_modules/@sentry: node
Only in output/force-build/standalone/node_modules/.pnpm/@sentry+nextjs@7.86.0_next@14.0.3_react@18.3.0-canary-627b7abd6-20230911_webpack@5.89.0/node_modules/@sentry: utils
Only in output/force-build/standalone/node_modules/.pnpm/@sentry+nextjs@7.86.0_next@14.0.3_react@18.3.0-canary-627b7abd6-20230911_webpack@5.89.0/node_modules: chalk
Only in output/force-build/standalone/node_modules/.pnpm/@sentry+nextjs@7.86.0_next@14.0.3_react@18.3.0-canary-627b7abd6-20230911_webpack@5.89.0/node_modules: next
Only in output/force-build/standalone/node_modules/.pnpm/@sentry+nextjs@7.86.0_next@14.0.3_react@18.3.0-canary-627b7abd6-20230911_webpack@5.89.0/node_modules: resolve
Only in output/force-build/standalone/node_modules/.pnpm/@sentry+nextjs@7.86.0_next@14.0.3_react@18.3.0-canary-627b7abd6-20230911_webpack@5.89.0/node_modules: rollup
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@sentry+node@7.86.0/node_modules/@sentry/core: c
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@sentry+node@7.86.0/node_modules/@sentry/node: c
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@sentry+node@7.86.0/node_modules: @sentry-intern
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@sentry-internal+tracing@7.86.0/node_modules: @s
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@sentry-internal+tracing@7.86.0/node_modules/@sentry/core: c
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@swc+helpers@0.4.14/node_modules/@swc/helpers: l
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@swc+helpers@0.5.2/node_modules/@swc/helpers: cj
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@webassemblyjs+ast@1.11.6/node_modules: @webasse
Only in output/force-build/standalone/node_modules/.pnpm/@webassemblyjs+ast@1.11.6/node_modules/@webassemblyjs: helper-numbers
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@webassemblyjs+helper-api-error@1.11.6: node_mod
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@webassemblyjs+helper-buffer@1.11.6: node_module
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@webassemblyjs+helper-numbers@1.11.6: node_modul
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@webassemblyjs+helper-wasm-bytecode@1.11.6: node
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@webassemblyjs+helper-wasm-section@1.11.6: node_
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@webassemblyjs+ieee754@1.11.6/node_modules: @web
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@webassemblyjs+ieee754@1.11.6/node_modules: @xtu
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@webassemblyjs+leb128@1.11.6/node_modules: @weba
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@webassemblyjs+utf8@1.11.6/node_modules: @webass
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@webassemblyjs+wasm-edit@1.11.6/node_modules: @w
Only in output/force-build/standalone/node_modules/.pnpm/@webassemblyjs+wasm-edit@1.11.6/node_modules/@webassemblyjs: wasm-gen
Only in output/force-build/standalone/node_modules/.pnpm/@webassemblyjs+wasm-edit@1.11.6/node_modules/@webassemblyjs: wasm-opt
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@webassemblyjs+wasm-gen@1.11.6/node_modules: @we
Only in output/cache-hit-build/standalone/node_modules/.pnpm/@webassemblyjs+wasm-opt@1.11.6/node_modules: @we
Only in output/cache-hit-build/standalone/node_modules/.pnpm/acorn-import-assertions@1.9.0_acorn@8.10.0: node
Only in output/cache-hit-build/standalone/node_modules/.pnpm/agent-base@6.0.2/node_modules/agent-base/dist: s
Only in output/cache-hit-build/standalone/node_modules/.pnpm/ajv-keywords@3.5.2_ajv@6.12.6/node_modules: ajv-
Only in output/cache-hit-build/standalone/node_modules/.pnpm/balanced-match@1.0.2/node_modules: balanced-matc
Only in output/cache-hit-build/standalone/node_modules/.pnpm/brace-expansion@2.0.1/node_modules: brace-expans
Only in output/cache-hit-build/standalone/node_modules/.pnpm/busboy@1.6.0/node_modules/streamsearch: li
Only in output/cache-hit-build/standalone/node_modules/.pnpm/caniuse-lite@1.0.30001585/node_modules: caniuse-
Only in output/cache-hit-build/standalone/node_modules/.pnpm/chrome-trace-event@1.0.3/node_modules: chrome-tr
Only in output/cache-hit-build/standalone/node_modules/.pnpm/dom-helpers@5.2.1/node_modules/dom-helpers: addC
Only in output/cache-hit-build/standalone/node_modules/.pnpm/dom-helpers@5.2.1/node_modules/dom-helpers: remo
Only in output/cache-hit-build/standalone/node_modules/.pnpm/electron-to-chromium@1.4.510/node_modules: elect
Only in output/cache-hit-build/standalone/node_modules/.pnpm/enhanced-resolve@5.15.0/node_modules: enhanced-r
Only in output/cache-hit-build/standalone/node_modules/.pnpm/es-module-lexer@1.3.0/node_modules: es-module-le
Only in output/cache-hit-build/standalone/node_modules/.pnpm/eslint-scope@5.1.1/node_modules/eslint-scope: li
Only in output/cache-hit-build/standalone/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules: fast-deep-eq
Only in output/cache-hit-build/standalone/node_modules/.pnpm/fast-json-stable-stringify@2.1.0/node_modules: f
Only in output/cache-hit-build/standalone/node_modules/.pnpm/glob-to-regexp@0.4.1/node_modules: glob-to-regex
Only in output/cache-hit-build/standalone/node_modules/.pnpm/hoist-non-react-statics@3.3.2/node_modules: hois
Only in output/cache-hit-build/standalone/node_modules/.pnpm/https-proxy-agent@5.0.1/node_modules/agent-base/dist: s
Only in output/cache-hit-build/standalone/node_modules/.pnpm/https-proxy-agent@5.0.1/node_modules: https-prox
Only in output/cache-hit-build/standalone/node_modules/.pnpm/intl-messageformat@10.3.3/node_modules: @formatj
Only in output/cache-hit-build/standalone/node_modules/.pnpm/intl-messageformat@10.3.3/node_modules: intl-mes
Only in output/cache-hit-build/standalone/node_modules/.pnpm/is-core-module@2.13.0/node_modules: is-core-modu
Only in output/cache-hit-build/standalone/node_modules/.pnpm/is-reference@1.2.1/node_modules/is-reference: di
Only in output/cache-hit-build/standalone/node_modules/.pnpm/jest-worker@27.5.1/node_modules/jest-worker: bui
Only in output/cache-hit-build/standalone/node_modules/.pnpm: jotai@2.2.1_react@18.3.0-canary-627b7abd6-20230
Only in output/cache-hit-build/standalone/node_modules/.pnpm/json-parse-even-better-errors@2.3.1: node_module
Only in output/cache-hit-build/standalone/node_modules/.pnpm/json-schema-traverse@0.4.1/node_modules: json-sc
Only in output/cache-hit-build/standalone/node_modules/.pnpm/launchdarkly-js-client-sdk@3.1.4/node_modules: l
Only in output/cache-hit-build/standalone/node_modules/.pnpm/localforage@1.10.0/node_modules/localforage: dis
Only in output/cache-hit-build/standalone/node_modules/.pnpm/lodash.debounce@4.0.8/node_modules: lodash.debou
Only in output/cache-hit-build/standalone/node_modules/.pnpm/lodash.throttle@4.1.1/node_modules: lodash.throt
Only in output/cache-hit-build/standalone/node_modules/.pnpm/lodash.uniqueid@4.0.1/node_modules: lodash.uniqu
Only in output/cache-hit-build/standalone/node_modules/.pnpm/magic-string@0.27.0/node_modules/magic-string: d
Only in output/cache-hit-build/standalone/node_modules/.pnpm: next@14.0.3_@opentelemetry+api@1.6.0_react-dom@
Only in output/cache-hit-build/standalone/node_modules/.pnpm/next@14.0.3_@opentelemetry+api@1.6.0_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules/@swc/helpers: cj
Only in output/cache-hit-build/standalone/node_modules/.pnpm: next@14.0.3_react-dom@18.3.0-canary-627b7abd6-2
Only in output/cache-hit-build/standalone/node_modules/.pnpm/next@14.0.3_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules/@swc/helpers: cj
Only in output/force-build/standalone/node_modules/.pnpm/next@14.0.3_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules: postcss
Only in output/force-build/standalone/node_modules/.pnpm/next@14.0.3_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules: react
Only in output/force-build/standalone/node_modules/.pnpm/next@14.0.3_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules: react-dom
Only in output/force-build/standalone/node_modules/.pnpm/next@14.0.3_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules: styled-jsx
diff: output/force-build/standalone/node_modules/.pnpm/node_modules/caniuse-lite: No such file or directory
Only in output/cache-hit-build/standalone/node_modules/.pnpm/node_modules/sharp/vendor/8.13.3: d
Only in output/cache-hit-build/standalone/node_modules/.pnpm: [redacted]@30.1.4_@emotion+react@11.11.1_@emot
Only in output/force-build/standalone/node_modules/.pnpm/[redacted]@30.1.4_@emotion+react@11.11.1_@emotion+styled@11.11.0_react-dom@18.3.0-canary-627_vcflnxxyig2c6kyanflnydo4p4/node_modules: react
Only in output/force-build/standalone/node_modules/.pnpm/[redacted]@30.1.4_@emotion+react@11.11.1_@emotion+styled@11.11.0_react-dom@18.3.0-canary-627_vcflnxxyig2c6kyanflnydo4p4/node_modules: react-dom
Only in output/force-build/standalone/node_modules/.pnpm/[redacted]@30.1.4_@emotion+react@11.11.1_@emotion+styled@11.11.0_react-dom@18.3.0-canary-627_vcflnxxyig2c6kyanflnydo4p4/node_modules: react-slick
Only in output/force-build/standalone/node_modules/.pnpm/[redacted]@30.1.4_@emotion+react@11.11.1_@emotion+styled@11.11.0_react-dom@18.3.0-canary-627_vcflnxxyig2c6kyanflnydo4p4/node_modules: react-toggle-button
Only in output/force-build/standalone/node_modules/.pnpm/[redacted]@30.1.4_@emotion+react@11.11.1_@emotion+styled@11.11.0_react-dom@18.3.0-canary-627_vcflnxxyig2c6kyanflnydo4p4/node_modules: react-transition-group
Only in output/cache-hit-build/standalone/node_modules/.pnpm: react-dom@18.3.0-canary-627b7abd6-20230911_reac
Only in output/force-build/standalone/node_modules/.pnpm/react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules: react
Only in output/cache-hit-build/standalone/node_modules/.pnpm: react-intersection-observer@9.4.3_react@18.3.0-
Only in output/cache-hit-build/standalone/node_modules/.pnpm: react-slick@0.29.0_react-dom@18.3.0-canary-627b
Only in output/force-build/standalone/node_modules/.pnpm/react-slick@0.29.0_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules: react
Only in output/cache-hit-build/standalone/node_modules/.pnpm: react-toggle-button@2.2.0_react@18.3.0-canary-6
Only in output/cache-hit-build/standalone/node_modules/.pnpm: react-transition-group@4.4.5_react-dom@18.3.0-c
Only in output/cache-hit-build/standalone/node_modules/.pnpm/react-transition-group@4.4.5_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules/dom-helpers: addC
Only in output/cache-hit-build/standalone/node_modules/.pnpm/react-transition-group@4.4.5_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules/dom-helpers: remo
Only in output/cache-hit-build/standalone/node_modules/.pnpm/react@18.3.0-canary-627b7abd6-20230911: node_mod
Only in output/cache-hit-build/standalone/node_modules/.pnpm/requestidlecallback@0.3.0/node_modules: requesti
Only in output/cache-hit-build/standalone/node_modules/.pnpm/resize-observer-polyfill@1.5.1/node_modules: res
Only in output/cache-hit-build/standalone/node_modules/.pnpm/scheduler@0.24.0-canary-627b7abd6-20230911: node
Only in output/cache-hit-build/standalone/node_modules/.pnpm/schema-utils@3.3.0/node_modules/schema-utils: di
Only in output/cache-hit-build/standalone/node_modules/.pnpm/serialize-javascript@6.0.1/node_modules: seriali
Only in output/cache-hit-build/standalone/node_modules/.pnpm/sharp@0.31.3/node_modules/sharp/vendor/8.13.3: d
Only in output/cache-hit-build/standalone/node_modules/.pnpm/simple-swizzle@0.2.2/node_modules: simple-swizzl
Only in output/cache-hit-build/standalone/node_modules/.pnpm/stacktrace-parser@0.1.10/node_modules: stacktrac
Only in output/cache-hit-build/standalone/node_modules/.pnpm/streamsearch@1.1.0/node_modules/streamsearch: li
Only in output/cache-hit-build/standalone/node_modules/.pnpm/string-convert@0.2.1/node_modules: string-conver
Only in output/cache-hit-build/standalone/node_modules/.pnpm: styled-jsx@5.1.1_react@18.3.0-canary-627b7abd6-
Only in output/cache-hit-build/standalone/node_modules/.pnpm/supports-color@7.2.0/node_modules: supports-colo
Only in output/cache-hit-build/standalone/node_modules/.pnpm/supports-color@8.1.1/node_modules: supports-colo
Only in output/cache-hit-build/standalone/node_modules/.pnpm/swiper@9.2.3/node_modules/swiper: components-sha
Only in output/cache-hit-build/standalone/node_modules/.pnpm/swiper@9.2.3/node_modules/swiper/core: breakpoin
Only in output/cache-hit-build/standalone/node_modules/.pnpm/swiper@9.2.3/node_modules/swiper/core: check-ove
Only in output/cache-hit-build/standalone/node_modules/.pnpm/swiper@9.2.3/node_modules/swiper/core: grab-curs
Only in output/cache-hit-build/standalone/node_modules/.pnpm/swiper@9.2.3/node_modules/swiper/core/modules: o
Only in output/cache-hit-build/standalone/node_modules/.pnpm/swiper@9.2.3/node_modules/swiper/core/modules: r
Only in output/cache-hit-build/standalone/node_modules/.pnpm/swiper@9.2.3/node_modules/swiper/core: transitio
Only in output/cache-hit-build/standalone/node_modules/.pnpm/swiper@9.2.3/node_modules/swiper/modules: autopl
Only in output/cache-hit-build/standalone/node_modules/.pnpm/swiper@9.2.3/node_modules/swiper/modules: contro
Only in output/cache-hit-build/standalone/node_modules/.pnpm/swiper@9.2.3/node_modules/swiper/modules: effect
Only in output/cache-hit-build/standalone/node_modules/.pnpm/swiper@9.2.3/node_modules/swiper/modules: free-m
Only in output/cache-hit-build/standalone/node_modules/.pnpm/swiper@9.2.3/node_modules/swiper/modules: hash-n
Only in output/cache-hit-build/standalone/node_modules/.pnpm/swiper@9.2.3/node_modules/swiper/modules: histor
Only in output/cache-hit-build/standalone/node_modules/.pnpm/swiper@9.2.3/node_modules/swiper/modules: keyboa
Only in output/cache-hit-build/standalone/node_modules/.pnpm/swiper@9.2.3/node_modules/swiper/modules: manipu
Only in output/cache-hit-build/standalone/node_modules/.pnpm/swiper@9.2.3/node_modules/swiper/modules: mousew
Only in output/cache-hit-build/standalone/node_modules/.pnpm/swiper@9.2.3/node_modules/swiper/modules: naviga
Only in output/cache-hit-build/standalone/node_modules/.pnpm/swiper@9.2.3/node_modules/swiper/modules: pagina
Only in output/cache-hit-build/standalone/node_modules/.pnpm/swiper@9.2.3/node_modules/swiper/modules: parall
Only in output/cache-hit-build/standalone/node_modules/.pnpm/swiper@9.2.3/node_modules/swiper/modules: scroll
Only in output/cache-hit-build/standalone/node_modules/.pnpm/swiper@9.2.3/node_modules/swiper/modules: virtua
Only in output/cache-hit-build/standalone/node_modules/.pnpm: terser-webpack-plugin@5.3.9_@swc+core@1.3.83_es
Only in output/cache-hit-build/standalone/node_modules/.pnpm/terser-webpack-plugin@5.3.9_@swc+core@1.3.83_esbuild@0.17.19_webpack@5.89.0/node_modules/jest-worker: bui
Only in output/cache-hit-build/standalone/node_modules/.pnpm/terser-webpack-plugin@5.3.9_@swc+core@1.3.83_esbuild@0.17.19_webpack@5.89.0/node_modules/schema-utils: di
Only in output/cache-hit-build/standalone/node_modules/.pnpm/webpack-sources@3.2.3/node_modules: webpack-sour
Only in output/cache-hit-build/standalone/node_modules/.pnpm/webpack@5.89.0_@swc+core@1.3.83_esbuild@0.17.19/node_modules/eslint-scope: li
Only in output/cache-hit-build/standalone/node_modules/.pnpm/webpack@5.89.0_@swc+core@1.3.83_esbuild@0.17.19/node_modules/schema-utils: di
Yeesh, that's long. LMK if you want me to remove it at some point to keep this manageable.
Diffing the two diff outputs shows me that it looks like all the "Only in output/cache-hit-build" lines go away with canary.1
. I think the other minimal changes are just down to some strangeness about diff's output. This would seem to support the idea that you've fixed one of the two bugs responsible for this issue.
I was able to update dependencies in the repro repo in such a way that I think it's now reproducing the whole problem, not just that one part of it!
I'm now getting the following output from the reproduce-issue.sh
script:
Diffing the original force-build's .next directory with the cache-hit-build's .next directory
Only in output/force-build/standalone/node_modules/.pnpm/next@14.1.0_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules: postcss
Only in output/force-build/standalone/node_modules/.pnpm/next@14.1.0_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules: react
Only in output/force-build/standalone/node_modules/.pnpm/next@14.1.0_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules: react-dom
Only in output/force-build/standalone/node_modules/.pnpm/react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules: react
Note that I also updated to the canary.1
version which explains why the prior output is gone, but if I downgrade to 1.12.4 I get a mix of these two issues just like in my monorepo project.
Sorry I didn't manage to capture that part of it before!
No worries, thanks for updating the repro.
I believe https://github.com/vercel/turbo/pull/7633 should fix the remaining diff issues.
Thanks! Let me know when there's a new canary version I can test against.
1.12.5-canary.2
is out and has the additional fixes for symlinks! Keeping open in case you find some additional issues with your primary project.
That seems to have done it! As of this version I'm once again able to run my server based purely on a cache-restored build without issue! 🎉
For full transparency, I am still seeing one line in the diff output:
diff: output/force-build/standalone/node_modules/.pnpm/node_modules/caniuse-lite: No such file or directory
But I'm fairly confident that issue has nothing to do with Turbo. I tried downgrading to 1.10.16
and I get the same output. I went looking for that file and I think the problem is that it's a broken symlink:
% pwd
/Users/trappar/[redacted]/.next/standalone/node_modules/.pnpm/node_modules
% ls -al
total 0
drwxr-xr-x 10 trappar staff 320 Mar 5 17:14 .
drwxr-xr-x 204 trappar staff 6528 Mar 5 17:14 ..
drwxr-xr-x 3 trappar staff 96 Mar 5 17:14 @opentelemetry
lrwxr-xr-x 1 trappar staff 54 Mar 5 17:14 caniuse-lite -> ../caniuse-lite@1.0.30001528/node_modules/caniuse-lite
lrwxr-xr-x 1 trappar staff 114 Mar 5 17:14 next -> ../next@14.0.3_react-dom@18.3.0-canary-627b7abd6-20230911_react@18.3.0-canary-627b7abd6-20230911/node_modules/next
lrwxr-xr-x 1 trappar staff 60 Mar 5 17:14 react -> ../react@18.3.0-canary-627b7abd6-20230911/node_modules/react
lrwxr-xr-x 1 trappar staff 34 Mar 5 17:14 sharp -> ../sharp@0.31.3/node_modules/sharp
lrwxr-xr-x 1 trappar staff 51 Mar 5 17:14 supports-color -> ../supports-color@7.2.0/node_modules/supports-color
lrwxr-xr-x 1 trappar staff 42 Mar 5 17:14 uglify-js -> ../uglify-js@3.17.4/node_modules/uglify-js
lrwxr-xr-x 1 trappar staff 71 Mar 5 17:14 webpack -> ../webpack@5.89.0_@swc+core@1.3.83_esbuild@0.17.19/node_modules/webpack
% ls -al .. | grep caniuse
drwxr-xr-x 3 trappar staff 96 Mar 5 17:14 caniuse-lite@1.0.30001585
Notice that the link points at caniuse-lite@1.0.30001528
but the version I have locally is caniuse-lite@1.0.30001585
. (different numbers)
In the cache restored version the symlink still exists, so I think Turbo is working perfectly and diff is just complaining since it isn't able to find the file. Maybe this is a PNPM or Next.js bug? Either way it's not causing any issues so I'd say this is fixed! Feel free to close!
For full transparency, I am still seeing one line in the diff output
Ah, we intentionally don't restore broken symlinks, but I think that's acceptable? If we run into a tool that depends on broken symlinks existing we can reconsider that decision.
Again, thanks for the great reproduction/write up/testing of the fixes!
Verify canary release
Link to code that reproduces this issue
https://github.com/trappar/turbo-cache-missing-output-files
What package manager are you using / does the bug impact?
pnpm
What operating system are you using?
Mac
Which canary version will you have in your reproduction?
1.12.4
Describe the Bug
When building my app with turbo, I have it configured to cache the
.next
directory. I noticed that if I build, then delete the.next
directory, then recover it from my turbo cache - the resulting files differ from the original files I had after building.Expected Behavior
The files cached by turbo cache should precisely match the original output files.
To Reproduce
The reproduction repo I linked has a
reproduce-issue.sh
script that you can run to see the issue. Since this is a minimal reproduction repo, the number of divergent files between the fresh and cached copies are minimal. In a large enterprise monorepo I work on, the number of files not being copied is massive and is causing our servers to error/crash when we try to run a build which was recalled from the turbo cache.Just for context, here's all that I'm doing in that script:
And this is producing the following list of file differences:
Additional context
The only context where I've seen this happen is a Next.js app using the "standalone" output mode. I suspect this is because the directory I'm trying to cache has long file paths and complex/internal links. It's possible that this could be distilled down even further into a reproduction that simply creates a directory structure like what Next.js creates, but this is probably the best repo since it's a fairly common application configuration.
I know this issue can be reproduced on Ubuntu and on Mac since I'm seeing these kinds of failures in CI, and I've reproduced it locally in that reproduction repo. I'm curious if this bug will happen on all OSes (windows?)
TURBO-2414