Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

fix: workspace-relative openInEditor paths resolve against cwd and double the package prefix in monorepos

Đang mở
#1,097 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức phù hợp với người mới
68/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
nuxtjs, typescript

Hướng nghiên cứu

Start at the openInEditor entry point described in the issue and inspect how process.cwd(), nuxt.options.workspaceDir, and the existsSync check are used before openInEditorHooks. Reproduce with a pnpm workspace app under apps/web on Windows, then verify that the workspace-relative path opens the expected file and hooks are not blocked by an early failure.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

bug
🐛 The bug

In a pnpm monorepo, Component Inspector → Open in Editor fails with a doubled package path:

File not found: <repo>/apps/web/apps/web/app/features/.../SomeComponent.vue

Expected file:

<repo>/apps/web/app/features/.../SomeComponent.vue

(Same pattern for any package under apps/<name>/, e.g. previously apps/app → apps/app/apps/app/....)

Why

openInEditor resolves non-absolute paths with process.cwd() (the Nuxt package root, e.g. apps/web):

if (input.startsWith("./") || !ABSOLUTE_PATH_RE.test(input))
  input = resolve(process.cwd(), input)

The inspector often sends a workspace-relative path like:

apps/web/app/features/.../SomeComponent.vue

So:

cwd (= …/apps/web) + apps/web/app/...  →  …/apps/web/apps/web/app/...

existsSync then fails and returns before openInEditorHooks run, so hooks cannot fix the path.

Nuxt already exposes nuxt.options.workspaceDir for monorepos, but it is not used here.

🛠️ To reproduce

pnpm monorepo with Nuxt at apps/web → pnpm --filter dev (cwd=apps/web) → Component Inspector → Open in Editor → File not found with doubled apps/web/apps/web/...

🌈 Expected behavior

Resolve relative open-in-editor paths against nuxt.options.workspaceDir (and/or try cwd → rootDir → workspaceDir and pick the first path that exists), then open the file.

Ideally openInEditorHooks should also run (or path normalization should happen) before the hard existsSync failure, so consumers can fix monorepo paths.

ℹ️ Additional context
Detailed reproduction
  1. pnpm workspace with Nuxt app at apps/web (not repo root).
  2. Run pnpm --filter <app> dev so process.cwd() is apps/web.
  3. Enable Component Inspector, click a component, Open in Editor.
  4. Observe File not found: …/apps/web/apps/web/app/....

Minimal layout:

repo/
  pnpm-workspace.yaml   # packages: ['apps/*']
  apps/
    web/                # Nuxt app (cwd when running nuxt dev)
      app/
        components/
          Foo.vue
Environment
  • Nuxt: 4.5.x
  • @nuxt/devtools: 3.4.x (via Nuxt)
  • Package manager: pnpm workspace
  • OS: Windows 10/11
Workaround

Local Nuxt module wrapping the DevTools RPC openInEditor to rewrite the path (try cwd / rootDir / workspaceDir + undouble apps/<pkg>/apps/<pkg>/…) before calling the original handler.

Also set:

// nuxt.config.ts
workspaceDir: fileURLToPath(new URL('../..', import.meta.url)), // monorepo root
Related
Ngôn ngữ chính
TypeScript
Star
3.3k
Fork
214
Merge trung bình
19 giờ 45 phút
Pull request đã merge (30 ngày)
12

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của nuxt/devtools

Tất cả issue của nuxt/devtools

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.