Skip to content

[bug] node_modules/.bin lookup path missing #2391

@GaussianWonder

Description

@GaussianWonder

When using pnpm the task lookup path misses node_modules/.bin. Because of this, cli tools (vitest, tsc, tsx, ...) don't work with moon run <...>.

Although not related, I see that for bun it works on other systems: #2363 (comment).

lookup paths contain both the root node_modules/.bin and the package's node_modules/.bin.

Executing tasks using pnpm exec works as expected, however this is won't work when extending tag-vitest.

Output of moon task fake-stream:dev:

About ──────────────────────────────────────────────────────────────────

  Target: fake-stream:dev
  Project: fake-stream
  Task: dev
  Toolchains: node, pnpm
  Type: run
  Preset: server
  Mode: persistent
  Depends on:
    - fake-stream:typecheck

Process ────────────────────────────────────────────────────────────────

  Command: tsx src/index.ts
  Shell: pwsh
  Environment variables: —
  Working directory: ___\___
  Lookup paths:
    - C:\Users\___\.proto\tools\node\24.14.0
    - C:\Users\___\.proto\tools\node\globals\bin
    - C:\Users\___\.proto\tools\pnpm\10.30.3\shims
    - C:\Users\___\AppData\Local\pnpm
    - C:\Users\___\.proto\tools\proto\0.55.2
    - C:\Users\___\.proto\shims
    - C:\Users\___\.proto\bin
    - C:\Users\___\.moon\bin
  Runs dependencies: Parallel
  Runs in CI: No

Configuration ──────────────────────────────────────────────────────────

  Inputs:
    - .moon/*.{yml,yaml,jsonc,json,pkl,hcl,toml}
    - infra/fake-stream/**/*
  Outputs: —

Steps to reproduce

.moon/toolchains.yml
# yaml-language-server: $schema=./cache/schemas/toolchains.json
$schema: "./cache/schemas/toolchains.json"

node:
  version: 24.14.0
  addEnginesConstraint: true
  dedupeOnLockfileChange: true
  packageManager: pnpm
  pnpm:
    version: 10.30.3
  syncPackageManagerField: true
  syncProjectWorkspaceDependencies: true

pnpm:
  version: 10.30.3
.moon/workspace.yml
# yaml-language-server: $schema=./cache/schemas/workspace.json
$schema: "./cache/schemas/workspace.json"

projects:
  - "apps/*"
  - "packages/*"
  - "infra/*"

pipeline:
  autoCleanCache: true
  cacheLifetime: "2 days"
.prototools
node = "24.14.0"
pnpm = "10.30.3"
go = "1.26"
moon = "2.0.3"

[env]
file = ".env"

[settings]
auto-install = true
auto-clean = true
.moon/tasks/node.yml
# yaml-language-server: $schema=../cache/schemas/tasks.json
$schema: "../cache/schemas/tasks.json"

inheritedBy:
  toolchain: node

tasks:
  typecheck:
    command:
      - "tsc"
      - "--build"
      - "--pretty"
      - "--verbose"
    type: build
    inputs:
      - "src/**/*"
      - "tests/**/*"
      - "types/**/*"
      - "tsconfig.json"
      - "tsconfig.*.json"
      - "/tsconfig.options.json"
project moon.yml
# yaml-language-server: $schema=../../.moon/cache/schemas/project.json
$schema: "../../.moon/cache/schemas/project.json"

stack: data
layer: tool
language: typescript
toolchains:
  default: node

project:
  ...

fileGroups:
  sources:
    - "src/**/*"

tasks:
  typecheck:
    outputs:
      - "tsconfig.tsbuildinfo"

  ...

  dev:
    toolchains: ["node", "pnpm"]
    command:
      # - "pnpm"
      # - "exec"
      - "tsx"
      - "src/index.ts"
    deps:
      - "typecheck"

Environment

paths
❯ whereis pnpm
C:\Users\___\.proto\tools\pnpm\10.30.3\shims\pnpm.cmd

❯ whereis node
C:\Users\___\.proto\tools\node\24.14.0\node.exe

summary of $env:PATH with stripped absolute paths:

1. .proto\activate-start
2. .proto\tools\moon\2.0.3
3. .proto\tools\node\24.14.0
4. .proto\tools\node\globals\bin
5. .proto\tools\pnpm\10.30.3\shims
6. AppData\Local\pnpm
7. .proto\tools\<other unreated>
8. .proto\shims
9. .proto\bin
10. .proto\activate-stop
11. others...
npx envinfo
  System:
    OS: Windows 11 10.0.26200
    CPU: (32) x64 AMD Ryzen 9 7950X 16-Core Processor
    Memory: 76.40 GB / 95.15 GB
  Binaries:
    Node: 24.14.0 - C:\Users\___\.proto\tools\node\24.14.0\node.EXE
    Yarn: 1.22.22 - C:\Users\___\AppData\Local\fnm_multishells\6784_1772363208964\yarn.CMD
    npm: 11.9.0 - C:\Users\___\.proto\tools\node\24.14.0\npm.CMD
    pnpm: 10.30.3 - C:\Users\___\.proto\tools\pnpm\10.30.3\shims\pnpm.CMD
    bun: 1.2.15 - C:\Users\___\.bun\bin\bun.EXE
    Deno: 2.6.0 - C:\Users\___\.deno\bin\deno.EXE
  Managers:
    Cargo: 1.93.1 - C:\Users\___\.cargo\bin\cargo.EXE
    pip3: 25.3 - ~\AppData\Local\Programs\Python\Python313\Scripts\pip3.EXE
  Utilities:
    7z: 24.14.0 - C:\Program Files\7-Zip\7z.exe
    CMake: 4.2.3 - C:\Program Files\CMake\bin\cmake.EXE
    Git: 2.53.0. - C:\Program Files\Git\cmd\git.EXE
    Git LFS: 3.7.1 - C:\Program Files\Git\cmd\git-lfs.EXE
    Clang: 21.1.8 - C:\Program Files\LLVM\bin\clang.EXE
    Ninja: 1.13.2 - C:\Users\___\AppData\Local\Microsoft\WinGet\Links\ninja.EXE
    FFmpeg: 7.1.1 - C:\Users\___\scoop\shims\ffmpeg.EXE
    Curl: 8.18.0 - C:\WINDOWS\system32\curl.EXE
    OpenSSL: 3.6.0 - C:\Users\___\scoop\apps\openssl\current\bin\openssl.EXE
  Virtualization:
    Docker: 29.2.1 - C:\Program Files\Docker\Docker\resources\bin\docker.EXE
    Docker Compose: 5.0.2 - C:\Program Files\Docker\Docker\resources\bin\docker-compose.EXE
  SDKs:
    Windows SDK:
      AllowDevelopmentWithoutDevLicense: Enabled
      Versions: 10.0.22621.0, 10.0.26100.0
  IDEs:
    VSCode: 1.109.5 - C:\Users\___\AppData\Local\Programs\Microsoft VS Code\bin\code.CMD
    Visual Studio: 17.14.36930.0 (Visual Studio Community 2022)
  Languages:
    Bash: 5.2.21 - C:\WINDOWS\system32\bash.EXE
    Go: 1.26.0 - C:\Users\___\.proto\tools\go\1.26.0\bin\go.EXE
    Java: 25.0.2 - C:\Program Files\Eclipse Adoptium\jdk-25.0.2.10-hotspot\bin\javac.EXE
    Python: 3.13.12 - C:\Users\___\AppData\Local\Programs\Python\Python313\python.EXE
    Python3: 3.13.12
    Rust: 1.93.1 - C:\Users\___\.cargo\bin\rustc.EXE
  Browsers:
    Chrome: 145.0.7632.117
    Edge: Spartan (24.14.0), Chromium (24.14.0), ChromiumDev (24.14.0)
    Firefox: 24.14.0 - C:\Program Files\Mozilla Firefox\firefox.exe

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions