-
Notifications
You must be signed in to change notification settings - Fork 101
Description
Summary
When using MeshJS (@meshsdk) in modern projects built with Vite 5+ (Rollup) — including frameworks like Nuxt.js (Nitro) or Next.js — the application fails to bundle or run in the browser.
This appears to be caused by @meshsdk's dependencies on Node.js-only packages (via @cardano-sdk), such as:
serialize-errornode-polyfill- Node core modules (
util,stream,crypto, etc.)
Additional Context
- Modern bundlers (Vite 5+, Rollup, Turbopack) have dropped automatic Node.js polyfill support.
- SSR runtimes like Nuxt 3's Nitro server remove Node core polyfills entirely, making Node-only dependencies unusable on the server.
- The problem persists even when manually adding polyfills and globalThis shims, indicating the root cause is deeper — i.e., reliance on Node-only APIs that cannot run in browser or SSR environments without major refactor.
Steps to reproduce the bug
- Create a new project with Vite 5+ or Nuxt 3 / Next.js configured to use Rollup.
- Install
@meshsdk/core. - Import and use any MeshJS API in a browser-targeted component.
- Build and run the project.
Actual Result
Even after:
- Installing and configuring
node-polyfill - Adding
globalThisshims
…the application still fails at runtime with errors such as:
Uncaught ReferenceError: exports is not defined
or
Uncaught TypeError: import_serialize_error.default is not a function
Expected Result
The application should bundle successfully and run in the browser without requiring manual Node polyfills.
SDK version
all version
Environment type
- Node.js
- Browser
- Browser Extension
- Other
Environment details
MeshJS version: 1.8.0
Vite version: 5.x
Framework: (e.g., Nuxt 3, Next 14, React, etc.)
SSR: Yes / No
Node version: 22.18.0
Browser: Chrome, Firefox, Brave
Metadata
Metadata
Assignees
Labels
Type
Projects
Status