You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Neovim中BiomeJS未加载biome.json配置,格式化与VSCode不一致

BiomeJS在Neovim中不读取biome.json的问题解决

问题描述

项目中已配置biome.json统一格式化与校验规则(已从ESLint和Prettier迁移),VSCode使用正常,但Neovim中BiomeJS未读取该配置,保存文件时格式化结果与预期不一致。以下是我的lsp.lua配置:

local util = require("lspconfig.util")

return {
  {
    "williamboman/mason.nvim",
    opts = function(_, opts)
      vim.list_extend(opts.ensure_installed, {
        "biome",
        "stylua",
        "selene",
        "luacheck",
        "shellcheck",
        "shfmt",
        "tailwindcss-language-server",
        "typescript-language-server",
        "css-lsp",
      })
    end,
  },
  {
    "neovim/nvim-lspconfig",
    opts = {
      --- other options
      servers = {
        tsserver = {
          on_attach = function(client)
            client.server_capabilities.documentFormattingProvider = false
          end,
        },
        biome = {
          cmd = { "biome", "lsp-proxy" },
          filetypes = {
            "javascript",
            "javascriptreact",
            "json",
            "jsonc",
            "typescript",
            "typescript.tsx",
            "typescriptreact",
            "astro",
            "svelte",
            "vue",
            "css",
          },
          root_dir = util.root_pattern("biome.json"),
        },
      },
    },
  },
}

排查与修复方案

1. 修正Biome LSP启动命令

你当前使用的lsp-proxy是旧版Biome的废弃命令,新版Biome已改为直接通过biome lsp启动LSP服务。修改biome配置中的cmd字段:

biome = {
  cmd = { "biome", "lsp" }, -- 替换原lsp-proxy命令
  -- ... 其他配置保持不变
},

旧命令会导致LSP无法正确加载项目根目录的biome.json。

2. 确认root_dir的识别逻辑

util.root_pattern("biome.json")的逻辑是对的,但要确保:

  • biome.json确实在项目根目录下
  • Neovim当前工作目录是项目根目录(可通过:echo vim.fn.getcwd()查看),如果不是,打开文件前用:cd /path/to/your/project切换到项目根目录。

3. 避免格式化工具冲突

确认没有其他格式化插件或LSP在Biome之前修改文件:

  • 你已经禁用了tsserver的格式化能力,这部分没问题
  • 检查是否安装了null-ls、formatter.nvim等工具,若有需确保它们不会处理Biome负责的文件类型。

4. 确保Biome的格式化能力被启用

在biome配置中添加on_attach函数,明确启用格式化能力:

biome = {
  -- ... 其他配置
  on_attach = function(client)
    client.server_capabilities.documentFormattingProvider = true
    client.server_capabilities.documentRangeFormattingProvider = true
  end,
},

避免因全局配置或其他插件意外禁用Biome的格式化能力。

5. 验证命令行下的Biome行为

在项目根目录执行:

biome format --check ./src/your-test-file.js

如果命令行下Biome能正确读取配置并校验格式,说明问题出在Neovim的LSP配置;如果命令行也异常,先检查biome.json的语法是否正确。


内容的提问来源于stack exchange,提问作者Owenn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 20:27:01