mirror of
https://github.com/langchain-ai/deepagentsjs.git
synced 2026-07-18 16:04:44 -04:00
[GH-ISSUE #292] deepagents fails to build with Vite/Rollup in browser targets due to named Node.js builtin imports #245
Closed
opened 2026-06-05 17:21:14 -04:00 by yindo
·
5 comments
No Branch/Tag Specified
main
dependabot/npm_and_yarn/patch-deps-updates-main-c0f001c0f6
dependabot/npm_and_yarn/major-deps-updates-main-b7ceb5d816
dependabot/npm_and_yarn/minor-deps-updates-main-f52a01c0f6
dependabot/github_actions/major-deps-updates-5c183d6ffa
dependabot/github_actions/minor-deps-updates-38afab4f4d
dependabot/github_actions/patch-deps-updates-00a0d7aaea
dependabot/docker/examples/async-subagent-server/major-deps-updates-docker-4faa477378
feat/delete-backend-protocol
feat/write-file-overwrites
feat/recursive-delete-tool
corridor/fix-1119d955-1783568785287
open-swe/bump-langsmith-0-8-0
alex/initializer
cb/connectors-spec-19bb
open-swe/fs-interrupt-permissions
sydney/oolong-ptc-runners
cb/fs-permissions-interrupt-9517
hunter/swarm-oolong-eval
colifran/swarm-eval
colifran/interp-libs
colifran/workflow-poc
colifran/swarm-sub-mw-defaults
hunter/fix-ci-read-file-mime-guard
fix/filesystem-glob-suppress-permission-errors
hunter/middleware-replace-by-name
hunter/fix-node-vfs-absolute-exec-paths
colifran/lazy-skills
cb/fix-subagent-stream-same-type-isolation
fix/acp-filesystem-virtual-mode
colifran/skill-dist
colifran/skill-cli
open-swe/9065a8d9-c0c3-5c29-b106-1a195b97ddbd
colifran/permissions
colifran/repl-swarm
hunter/quickjs-pending-write-reads
colifran/swarm-in-repl
jacob/subagents
jacob/subagenttype
open-swe/7460276d-5f03-10ca-8a53-7653699f1133
colifran/swarm-tool
hunter/fix-sandbox-find-follow-symlinks
open-swe/dfd00850-86b7-5f87-2c10-3bd968b1c75e
colifran/swarm-refactor
colifran/swarm-table
colifran/swarm
open-swe/8d89ab28-9b47-3a19-427b-aacfa4c5d099
open-swe/086c3d27-2ff0-ebf5-5d74-4d35e38083c5
open-swe/23f64c62-afe9-dc40-bbe0-c86a558611b3
hunter/namespace-factories
alpha
baseten-integration
colifran/deprecate-backend-factories
colifran/agent-protocol-poc
colifran/a2a-subagents
ci/add-codeql-scanning
colifran/async-example
colifran/async-subagents-example
1.9.0-alpha.1
colifran/backend-rename
hunter/js-queue-lookahead-middleware
cb/secure-exec
cb/pass-checkpointer
colifran/multimodal-refactor-pr2
structured-output-evals
subagent-structured-output
colifran/multimodal-refactor-pr1
cb/async-agents
hunter/repl-rlm
cb/ptc-repl-network-policy
cb/ptc-repl
cb/ptc
open-swe/020b364c-2a7f-e2b2-30e0-4593befd0490
add-evals
hunter/structured-output-eval
cb/composite-fix
hunter/async-subagents
hunter/relo-evals
cb/summarization-improvements
hunter/deepbash
harbor-evals
hunter/trace-metadata
hunter/integration
cb/langsmith-sandbox
isolate-agent-skills
hunter/batch-task
fix-memory-load-state
add-e2e-test
cb/add-streaming-example
copilot/fix-partial-file-updates
copilot/fix-file-state-loss
nh/release-1.0.0
dqbd/fs-store
hunter/v1
dqbd/js
cb/createAgent-migration
cb/repo-update
palash/add-built-in-toosl
palash/skip-tools
palash/add-interrupt-config
brace/bump-langgraph
open-swe/6f37e688-42f4-458b-a26a-9de18f1c5ab8
palash/post-model-hook
palash/add-local
palash/add-post-model-hook-interrupt
palash/final-touch-ups
palash/subagent-fix
palash/add-langgraph-server
palash/update-readme
palash/change-name-to-deepagents
palash/fix-anthropic-zod-import
brace/fixes
open-swe/8357536e-2207-4292-a24d-00ea431ed4d4
open-swe/9453f008-7578-458d-bb92-e729e9fca363
deepagents@1.11.1
deepagents-acp@0.1.20
deepagents@1.11.0
deepagents-acp@0.1.19
@langchain/node-vfs@0.2.1
deepagents@1.10.8
deepagents-acp@0.1.18
deepagents@1.10.7
deepagents-acp@0.1.17
deepagents@1.10.6
deepagents-acp@0.1.16
@langchain/quickjs@0.6.0
@langchain/modal@0.1.5
@langchain/daytona@0.2.1
deepagents@1.10.5
deepagents-acp@0.1.15
@langchain/quickjs@0.5.1
deepagents@1.10.4
deepagents-acp@0.1.14
@langchain/quickjs@0.5.0
@langchain/node-vfs@0.2.0
deepagents@1.10.2
deepagents-acp@0.1.12
deepagents@1.10.1
deepagents-acp@0.1.11
@langchain/quickjs@0.4.0
deepagents@1.10.0
deepagents-acp@0.1.10
@langchain/quickjs@0.3.0
deepagents@1.9.1
deepagents-acp@0.1.9
@langchain/quickjs@0.2.6
deepagents@1.9.0
deepagents-acp@0.1.8
@langchain/sandbox-standard-tests@1.0.0
@langchain/quickjs@0.2.5
@langchain/node-vfs@0.1.4
@langchain/modal@0.1.4
deepagents@1.9.0-alpha.1
deepagents-acp@0.1.8-alpha.0
@langchain/quickjs@0.2.5-alpha.0
@langchain/node-vfs@0.1.4-alpha.0
@langchain/modal@0.1.4-alpha.0
@langchain/deno@0.2.2-alpha.0
@langchain/daytona@0.2.0-alpha.0
deepagents@1.8.8
deepagents-acp@0.1.7
@langchain/quickjs@0.2.4
deepagents@1.8.7
deepagents-acp@0.1.6
@langchain/quickjs@0.2.3
@langchain/daytona@0.2.0
deepagents@1.8.6
deepagents-acp@0.1.5
@langchain/quickjs@0.2.2
@langchain/deno@0.2.2
deepagents@1.9.0-alpha.0
deepagents-acp@0.1.5-alpha.0
@langchain/sandbox-standard-tests@1.0.0-alpha.0
@langchain/quickjs@1.0.0-alpha.0
@langchain/node-vfs@1.0.0-alpha.0
@langchain/modal@1.0.0-alpha.0
@langchain/deno@1.0.0-alpha.0
@langchain/daytona@1.0.0-alpha.0
deepagents@1.8.5
deepagents-acp@0.1.4
@langchain/quickjs@0.2.1
@langchain/node-vfs@0.1.3
deepagents@1.8.3
deepagents-acp@0.1.2
deepagents-acp@0.1.0
deepagents@1.8.1
@langchain/modal@0.1.3
deepagents@1.8.0
@langchain/sandbox-standard-tests@0.1.0
@langchain/node-vfs@0.1.2
@langchain/deno@0.2.1
@langchain/daytona@0.1.2
deepagents@1.7.6
deepagents@1.7.5
deepagents@1.7.4
@langchain/deno@0.2.0
@langchain/deno@0.1.2
deepagents@1.7.3
deepagents@1.7.2
@langchain/modal@0.1.2
deepagents@1.7.1
@langchain/node-vfs@0.1.1
@langchain/modal@0.1.1
@langchain/deno@0.1.1
@langchain/daytona@0.1.1
deepagents@1.7.0
@langchain/node-vfs@0.1.0
@langchain/modal@0.1.0
@langchain/deno@0.1.0
@langchain/daytona@0.1.0
deepagents@1.6.3
deepagents@1.6.2
deepagents@1.6.1
deepagents@1.6.0
deepagents@1.5.1
deepagents@1.5.0
deepagents@1.4.2
deepagents@1.4.1
deepagents@1.4.0
v1.3.1
v1.3.0
v1.2.0
v1.1.1
v1.1.0
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: langchain-ai/deepagentsjs#245
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @BjoernSchotte on GitHub (Mar 10, 2026).
Original GitHub issue: https://github.com/langchain-ai/deepagentsjs/issues/292
Originally assigned to: @christian-bromann on GitHub.
Description
Importing anything from
deepagentsin a Vite browser build fails with hard errors. The builtdist/index.jsis a single flat bundle that contains named imports from Node.js builtins. Vite externalizesnode:*modules for browser compatibility, but named imports (as opposed to default imports) cause Rollup to fail because it verifies that the binding exists in the externalized module.The library's architecture already supports browser use —
BackendProtocol,StateBackend,StoreBackend, all middleware, andcreateDeepAgenthave zero Node.js dependencies. The issue is purely packaging: the single barrel export bundles Node-only modules alongside browser-safe ones into a flatdist/index.js.Package version: 1.8.1 (latest on npm)
Vite version: 7.3.1 (latest)
Reproduction
Minimal repro: https://github.com/BjoernSchotte/deepagents-vite-repro
Actual Behavior
The build fails with 3 sequential hard errors (each one hidden behind the previous):
Error 1:
node:async_hooks(from@langchain/langgraph, not deepagents)Error 2:
"path"(from deepagentsbackends/utils.ts)After stubbing
node:async_hooksviaresolve.alias:Error 3:
node:child_process(from deepagentsbackends/filesystem.ts/local-shell.ts)After also stubbing
path:After stubbing all 6
node:*modules +pathvia Viteresolve.alias, the build succeeds (840 modules, zero errors). The Node-only code paths are dead code when usingcreateDeepAgent+StateBackend.Why Named Imports Fail But Default Imports Don't
Vite externalizes unresolvable modules as
__vite-browser-external(an empty object). Default imports (import fs from "node:fs") succeed becausefsjust becomes{}— Rollup doesn't verify property access at build time. Named imports (import { spawn } from "node:child_process") fail because Rollup verifies the binding exists as an export.The built
dist/index.jslines 5–18:Only 2 of the 14 Node.js-related imports in
dist/index.jscause hard build failures.Suggested Fix
Minimal fix (one-line change)
Replace
import { basename } from "path"inbackends/utils.ts(line 10) with an inline function:This eliminates Error 2. Error 3 (
spawn) would still require consumer-side aliasing, but consumers would only need to stubnode:child_process(andnode:async_hookswhich is a@langchain/langgraphissue, not deepagents).Proper fix:
deepagents/browsersubpath exportAdd a
src/browser.tsbarrel that re-exports only browser-safe modules (everything exceptconfig.ts,FilesystemBackend,LocalShellBackend,skills/loader.ts,middleware/agent-memory.ts). Add a second tsdown entry point and update theexportsmap:This would let browser consumers write:
with zero Vite configuration needed.
Workaround
Add
resolve.aliasentries invite.config.tsto stub the Node builtins with modules that provide the named exports Rollup needs:The stubs provide the named exports so the build succeeds; the Node-only code is dead code when using
createDeepAgent+StateBackend.@dhrumil83 commented on GitHub (Mar 16, 2026):
We are currently using LangGraph to run AI agent orchestration fully in the browser, where agents interact directly with application state (maps, layers, UI context, etc.), and have run into similar constraints across multiple packages.
Sharing some context on how we are approaching browser-side agent architectures in case useful:
Blog: https://www.esri.com/arcgis-blog/products/js-api-arcgis/developers/introducing-ai-components-beta-in-the-js-maps-sdk
Docs: https://developers.arcgis.com/javascript/latest/agentic-apps/ai-introduction/
@BjoernSchotte commented on GitHub (Mar 18, 2026):
@christian-bromann any news on this? Anything I can help with?
@3ddelano commented on GitHub (Mar 20, 2026):
hey @BjoernSchotte I'm also facing similar issue. Do you perhaps have a github repo with a fix? I tried using the resolve alias but still encountering issues.
@BjoernSchotte commented on GitHub (Mar 20, 2026):
Had a call with @christian-bromann - the better way would be to have the vendor create a fix for that (they have it on their radar already bc goal is that deepagentsjs should fully run in the browser) so that it also goes through their eval systems etc. That's why I was asking in the newer comment.
@hntrl commented on GitHub (Jun 2, 2026):
Quick update: this is now addressed in PR #574. Thanks for the detailed repro and write-up!
Once this PR merges and releases, you should be importing via: