Fix o1js WASM Load Issue in Next.js by Marking it as External Dependency #23
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This PR addresses the issue where the o1js WebAssembly file (plonk_wasm_bg.wasm) could not be found during server-side execution in a Next.js environment, resulting in an
"ENOENT: no such file or directory" error
. The problem arises because Next.js bundles the o1js code, which implicitly depends on the relative location of the WASM file.For this reason until now we needed to use dynamic imports like
dynamic(() => import("./component"), { ssr: false, });
to import pages and components that depended on zk modules and stores.With this change this will no longer be necessary.
Changes:
Updated next.config.js to treat o1js as an external dependency during the Webpack build process. This ensures that the o1js code is not bundled by Next.js, but instead loaded directly from node_modules at runtime.
Thanks to @mitschabaude for pointing out the solution
o1-labs/o1js#1811 (comment)