Skip to content

getCallSites output differs between Node and Bun triggering loop detection #33997

@tiagovtristao

Description

@tiagovtristao

Current Behavior

Hey team,

I am trying to use Bun (1.3.5) instead of Node (v22.17.0) for running Nx (v22.1.3) and bumped into the following error:

Command:

bunx --bun nx run api:build

Error:

 NX   Project graph construction cannot be performed due to a loop detected in the call stack. This can happen if 'createProjectGraphAsync' is called directly or indirectly during project graph construction.

To avoid this, you can add a check against "global.NX_GRAPH_CREATION" before calling "createProjectGraphAsync".
Call stack:
buildProjectGraphAndSourceMapsWithoutDaemon (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/project-graph/project-graph.js:81:62)
createProjectGraphAndSourceMapsAsync (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/project-graph/project-graph.js:274:31)
createProjectGraphAndSourceMapsAsync (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/project-graph/project-graph.js:225:53)
createProjectGraphAsync (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/project-graph/project-graph.js:222:45)
createProjectGraphAsync (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/project-graph/project-graph.js:205:40)
runOne (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/command-line/run/run-one.js:23:52)
runOne (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/command-line/run/run-one.js:16:23)
Pass --verbose to see the stacktrace.

After some digging I found that the stack trace produced by https://github.com/nrwl/nx/blob/691bb320ce1e9cc2872e1a1b364d3fdeb9e1ad0e/packages/nx/src/utils/call-sites.ts differs between Node and Bun. When

const stackframes = getCallSites().slice(2);
is run, the produced function call tracing is:

Node (v22.17.0):

#0 createProjectGraphAndSourceMapsAsync
#1 createProjectGraphAsync
#2 runOne
#3 <anonymous>
#4 <anonymous>
#5 handleErrors
#6 handler

Bun (1.3.5):

#0 buildProjectGraphAndSourceMapsWithoutDaemon <- This entry causes Nx to detect a loop
#1 createProjectGraphAndSourceMapsAsync
#2 createProjectGraphAndSourceMapsAsync
#3 createProjectGraphAsync
#4 createProjectGraphAsync
#5 runOne
#6 runOne

This is not a Nx bug per-se, but wondering if this falls into the efforts of supporting Bun into Nx (i.e. https://nx.dev/blog/nx-19-5-adds-stackblitz-new-features-and-more#bun-and-pnpm-v9-support)?

I will cross post the above into the Bun repo too for input.

Expected Behavior

Able to execute Nx commands with Bun

GitHub Repo

No response

Steps to Reproduce

  1. Run bunx --bun nx run api:build

Nx Report

NX_DAEMON=true bunx --bun nx --disableNxCache --disableRemoteCache --outputStyle dynamic-legacy report                       1 ✘  16:18:00 

 NX   Report complete - copy this into the issue template

Node           : 24.3.0
OS             : darwin-arm64
Native Target  : aarch64-macos
pnpm           : 9.6.0

nx                     : 22.1.3
@nx/js                 : 22.1.3
@nx/jest               : 22.1.3
@nx/eslint             : 22.1.3
@nx/workspace          : 22.1.3
@nx/cypress            : 22.1.3
@nx/devkit             : 22.1.3
@nx/esbuild            : 22.1.3
@nx/eslint-plugin      : 22.1.3
@nx/module-federation  : 22.1.3
@nx/nest               : 22.1.3
@nx/next               : 22.1.3
@nx/node               : 22.1.3
@nx/playwright         : 22.1.3
@nx/plugin             : 22.1.3
@nx/react              : 22.1.3
@nx/rollup             : 22.1.3
@nx/storybook          : 22.1.3
@nx/vite               : 22.1.3
@nx/vitest             : 22.1.3
@nx/web                : 22.1.3
@nx/webpack            : 22.1.3
@nx/docker             : 22.1.3
nx-cloud               : 19.1.0
@nrwl/nx-cloud         : 19.1.0
typescript             : 5.7.3
---------------------------------------
Registered Plugins:
@nxlv/python
---------------------------------------
Community plugins:
@nxlv/python : 21.2.0
---------------------------------------
Cache Usage: 0.00 B / 92.64 GB
---------------------------------------
⚠️ Unable to construct project graph.
Project graph construction cannot be performed due to a loop detected in the call stack. This can happen if 'createProjectGraphAsync' is called directly or indirectly during project graph construction.
To avoid this, you can add a check against "global.NX_GRAPH_CREATION" before calling "createProjectGraphAsync".
Call stack:
buildProjectGraphAndSourceMapsWithoutDaemon (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/project-graph/project-graph.js:81:62)
createProjectGraphAndSourceMapsAsync (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/project-graph/project-graph.js:274:31)
createProjectGraphAndSourceMapsAsync (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/project-graph/project-graph.js:225:53)
createProjectGraphAsync (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/project-graph/project-graph.js:222:45)
createProjectGraphAsync (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/project-graph/project-graph.js:205:40)
tryGetProjectGraph (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/command-line/report/report.js:278:51)
tryGetProjectGraph (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/command-line/report/report.js:276:37)
Error: Project graph construction cannot be performed due to a loop detected in the call stack. This can happen if 'createProjectGraphAsync' is called directly or indirectly during project graph construction.
To avoid this, you can add a check against "global.NX_GRAPH_CREATION" before calling "createProjectGraphAsync".
Call stack:
buildProjectGraphAndSourceMapsWithoutDaemon (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/project-graph/project-graph.js:81:62)
createProjectGraphAndSourceMapsAsync (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/project-graph/project-graph.js:274:31)
createProjectGraphAndSourceMapsAsync (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/project-graph/project-graph.js:225:53)
createProjectGraphAsync (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/project-graph/project-graph.js:222:45)
createProjectGraphAsync (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/project-graph/project-graph.js:205:40)
tryGetProjectGraph (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/command-line/report/report.js:278:51)
tryGetProjectGraph (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/command-line/report/report.js:276:37)
    at preventRecursionInGraphConstruction (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/project-graph/project-graph.js:343:19)
    at buildProjectGraphAndSourceMapsWithoutDaemon (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/project-graph/project-graph.js:82:5)
    at buildProjectGraphAndSourceMapsWithoutDaemon (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/project-graph/project-graph.js:81:62)
    at createProjectGraphAndSourceMapsAsync (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/project-graph/project-graph.js:274:31)
    at createProjectGraphAndSourceMapsAsync (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/project-graph/project-graph.js:225:53)
    at createProjectGraphAsync (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/project-graph/project-graph.js:222:45)
    at createProjectGraphAsync (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/project-graph/project-graph.js:205:40)
    at tryGetProjectGraph (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/command-line/report/report.js:278:51)
    at tryGetProjectGraph (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/command-line/report/report.js:276:37)
    at getReportData (/app/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_t_twtgkxomntuzxcyp4ewkmtxn2q/node_modules/nx/src/command-line/report/report.js:223:55)

Failure Logs

Package Manager Version

pnpm

Operating System

  • macOS
  • Linux
  • Windows
  • Other (Please specify)

Additional Information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions