Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

fix: Nuxt DevTools (vite-plugin-inspect) breaks oxc-walker's parseSync resolution, causing oxc-walker: could not resolve a parseSync implementation across many plugin transforms

未关闭
#1,081 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
38/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
活跃
技术栈
nuxt, typescript, vite

调研方向

首先,在启用 DevTools 的情况下使用 npm run dev 或 npm run build 重现 Nuxt starter kit 中的故障。通过 vite-plugin-inspect 跟踪转换路径,直到 oxc-walker's resolveParseSync 和 Nuxt 的 keyed-functions compiler macro;当 oxc-parser 成功解析且报告的转换错误消失,同时不禁用 DevTools 时,即表示完成。

由索引模型根据 Issue 内容生成。

描述

bug needs reproduction
🐛 The bug
Summary

When Nuxt DevTools is enabled, plugin/component transforms that rely on oxc-walker (via @unhead, Nuxt's internal keyed-functions compiler macro, nuxt-schema-org, nuxt-auth-sanctum, etc.) intermittently or consistently fail with:

oxc-walker: could not resolve a parseSync implementation. Install oxc-parser or rolldown (and use rolldown/utils), or pass a parseSync function via the parseAndWalk options.

Disabling DevTools (devtools: { enabled: false } in nuxt.config.ts) makes the error disappear entirely and permanently, across every environment we tested.

Environment

Nuxt: 4.4.8 and 4.5.2 (reproduced on both)
Vite: 7.3.6 and 8.2.2 (reproduced on both — not specific to Vite 8/Rolldown)
Node: v26.8.1
npm: 12.0.2
OS: macOS (Darwin 25.6.0), Apple Silicon (arm64)
oxc-parser: 0.147.0 (installed and working correctly when tested standalone via node -e "require('oxc-parser').parseSync")
oxc-walker: 1.1.1

Reproduction

Any Nuxt project with devtools enabled (the default) and any module that triggers oxc-walker-based static analysis on plugins/components (this reproduces even on the official Nuxt starter kit — no extra modules required beyond what DevTools itself needs).
Run npm run dev (or npm run build).
Errors/warnings appear referencing multiple internal Nuxt plugin files (payload.client.js, revive-payload.*.js, router.js, unhead.js, user components like AppFooter.vue, etc.), each pointing to oxc-walker's resolveParseSync.

Example full stack trace (dev mode, triggered from a Vue component via Nuxt's keyed-functions compiler macro):

[plugin:nuxt:compiler:keyed-functions] oxc-walker: could not resolve a parseSync implementation. Install oxc-parser or rolldown (and use rolldown/utils), or pass a parseSync function via the parseAndWalk options.

/path/to/project/app/components/app/AppFooter.vue

at resolveParseSync (node_modules/oxc-walker/dist/index.mjs:174:8)
at parseAndWalk (node_modules/oxc-walker/dist/index.mjs:196:29)
at TransformPluginContext.handler (node_modules/nuxt/dist/index.mjs:4754:29)
at async file:///.../node_modules/vite-plugin-inspect/dist/shared/vite-plugin-inspect.Fv_Ybe1l...
at async EnvironmentPluginContainer.transform (node_modules/@nuxt/vite-builder/node_modules/vite/dist/...)
at async loadAndTransform (node_modules/@nuxt/vite-builder/node_modules/vite/dist/...)
at async viteTransformMiddleware (node_modules/@nuxt/vite-builder/node_modules/vite/dist/...)

Note that vite-plugin-inspect (bundled with/used by Nuxt DevTools) sits directly in the transform call stack, between Vite's plugin container and the point where oxc-walker fails to resolve parseSync.

Expected behavior

oxc-walker should resolve parseSync from oxc-parser regardless of whether DevTools/vite-plugin-inspect is wrapping the transform pipeline.

Actual behavior

With DevTools enabled, oxc-walker's internal resolveParseSync() (which uses createRequire(import.meta.url) from its own module location) fails to locate oxc-parser, even though:

oxc-parser is correctly installed and resolvable via both require() and dynamic import() when tested standalone.
npm ls oxc-parser and npm ls oxc-walker show a single, deduplicated version each across the whole dependency tree.

This strongly suggests vite-plugin-inspect's transform wrapping changes the module context (e.g. import.meta.url, or how the transform function is invoked/bound) in a way that breaks oxc-walker's createRequire-based resolution of oxc-parser.

Confirmed fix
ts
// nuxt.config.ts
export default defineNuxtConfig({
  devtools: { enabled: false },
})

After disabling DevTools and restarting the dev server (with .nuxt and node_modules/.vite cleared for good measure), the error disappears completely and does not return, across multiple terminal environments (plain Terminal.app and VS Code's integrated terminal) and across both a dev-only session and a build → dev cycle.

🛠️ To reproduce
🌈 Expected behavior
ℹ️ Additional context

p.s. bugreport generated with Claude AI.

主要语言
TypeScript
星标
3.3k
派生
217
平均合并
1 天 4 小时
30 天内合并 PR
21

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

nuxt/devtools 的其他 Issue

查看 nuxt/devtools 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。