fix(vscode): stop the oxc language server from crashing on startup - #2245
Conversation
✅ Deploy Preview for viteplus-preview canceled.
|
e6545f6 to
d45fd6e
Compare
Nested config search evaluates every vite.config.ts in the workspace inside the language server's own Node process. That includes the PTY snapshot fixtures, one of which deliberately crashes Node from an uncaughtException handler, so the server died on startup and VS Code stopped restarting it after five attempts. The root config's lint.ignorePatterns does not apply here — it filters lint targets, not config discovery — so pin the root config and disable nested search.
d45fd6e to
3d60243
Compare
|
This might be trickier than expected. 👀 First, specifying Second, I think this applies to oxfmt as well, so we might also need to specify And for oxfmt, I need to implement disableNestedConfig for LSP…! NOTE: If I remember correctly, this In other words, if a subdirectory other than the root is opened as the workspace, this setting won't be referenced. In normal use cases, users wouldn't leave a misconfigured file lying around, so this is mostly just an inconvenience for us, but anyway... |
|
@leaysgur Thanks for the review! I didn't realize the two options do the same thing — in that case I'll keep just Bonus: with only |
Setting oxc.configPath already disables nested config search, so specifying both is redundant. The root vite.config.ts is discovered automatically, so keep only oxc.disableNestedConfig.
|
Once we find a solution that works for both Oxlint and Oxfmt, would it make sense for It now only includes Oxfmt's That said, I personally still hope #997 can get supported 😃 |
leaysgur
left a comment
There was a problem hiding this comment.
I think adding only disableNestedConfig is enough for now 🤔
I agree. 👍🏻
Bonus: with only disableNestedConfig enabled, I'm not seeing any errors from either oxlint or oxfmt.
I recall this is because the two tools have different strategies for loading config, with Oxlint loading them eagerly. Therefore, I believe that Oxfmt would also error if it encountered a corrupted config lazily.
I don't think this will be a problem at the moment, but I'll go ahead and implement oxc.fmt.disableNestedConfig.
I think so too. At least, it seems that we should fix the inconsistency between two tools. 😓 |
Refs: voidzero-dev/vite-plus#2245 (I had assumed Oxlint didn't have an option for LSP either, but that wasn't the case.)
|
NOTE:
Anyway, let's merge this PR for now. We can add |
Release vite-plus v0.2.7: Clearer commands and smoother setup. This release makes built-in and package-script collisions easier to navigate, adds concurrency control to `vp pack`, and smooths migrations and package-manager setup. ### Highlights - Guide users to `vpr <name>` when a built-in shares a name with a `package.json` script, preserve the exact command alias they typed, and avoid duplicate notes from task-spawned tools ([#2262](#2262), [#2259](#2259), [vite-task#570](voidzero-dev/vite-task#570)), by @wan9chi - Add `--concurrency` to `vp pack` to limit parallel Rolldown builds, and update tsdown `0.22.13` -> `0.22.14` and Vite DevTools `0.4.2` -> `0.4.5` ([#2233](#2233)), by @voidzero-guard[bot] - Add read-only Svelte rune globals to migrated Oxlint overrides, preventing false `no-undef` errors ([#2192](#2192)), by @naokihaba - Install package managers from npm tarballs with nonstandard top-level directories, fixing Yarn 1.22.19 installation ([#2264](#2264)), by @TheAlexLichter ### Fixes & Enhancements - Preserve machine-readable command output by sending informational CLI notes to stderr ([#2265](#2265)), by @wan9chi - Prevent the Oxc language server from crashing when contributors open the Vite+ workspace in VS Code ([#2245](#2245)), by @jong-kyung ### Docs - Document the full procedure for removing Vite+ commit hooks ([#2218](#2218)), by @TheAlexLichter - Document per-process and per-machine ways to disable Vite+ commit hooks without uninstalling them ([#2230](#2230)), by @TheAlexLichter - Clarify when to use built-in `vp` commands versus package scripts through `vp run` or `vpr`, including migration and agent guidance ([#2255](#2255)), by @wan9chi - Document GitLab CI/CD setup with the reusable `setup-vp` template ([#2258](#2258)), by @naokihaba ### Chore - Run Semgrep security scans on pull requests and pushes to `main` ([#2223](#2223)), by @Boshen - Re-enable Vitest browser-mode CLI snapshot coverage on every supported platform ([#2275](#2275)), by @wan9chi - Stabilize Windows CLI snapshot tests for interrupted installs and browser port fallback ([#2282](#2282)), by @wan9chi - Replace deprecated shared JavaScript and TypeScript VS Code settings with their current `js/ts.*` names ([#2246](#2246)), by @jong-kyung ### Bundled Versions | Tool | Version | Source | | --------------- | ---------- | ----------------------------------------------------------------------- | | vite | `8.1.5` | [`5e7fe12`](vitejs/vite@5e7fe12) | | rolldown | `1.2.0` | [`03e1e34`](rolldown/rolldown@03e1e34) | | tsdown | `0.22.14` | [npm](https://npmx.dev/package/tsdown/v/0.22.14) | | vitest | `4.1.10` | [npm](https://npmx.dev/package/vitest/v/4.1.10) | | oxlint | `1.75.0` | [npm](https://npmx.dev/package/oxlint/v/1.75.0) | | oxlint-tsgolint | `7.0.2001` | [npm](https://npmx.dev/package/oxlint-tsgolint/v/7.0.2001) | | oxfmt | `0.60.0` | [npm](https://npmx.dev/package/oxfmt/v/0.60.0) | ### Upgrade ```bash vp upgrade ``` **Full Changelog**: v0.2.6...v0.2.7 --- Merging this PR will trigger the release workflow. --------- Co-authored-by: voidzero-guard[bot] <278573678+voidzero-guard[bot]@users.noreply.github.com> Co-authored-by: wan9chi <dk4rest@gmail.com>
Summary
The oxc language server crashes on startup in this repo, so there is no linting or formatting for the session.
Nested config search is on by default, so the server evaluates every
vite.config.tsin the workspace inside its own Node process — including the PTY snapshot fixtures, one of which crashes Node on purpose (fixtures/migration_config_process_crash_isolated).Pin the root config and disable nested search in
.vscode/settings.json, mirroring thevitest.configSearchPatternExcludeentry already there for the same fixtures.