Neovim中none-ls的eslint_d异常及oxlint/biome切换问题
问题解决:Neovim none-ls eslint_d异常及oxlint/biome配置错误
一、eslint_d 异常原因及修复
报错本质
“failed to decode json: Expected value but found invalid token at character 1” 核心是eslint_d返回的结果不是合法JSON格式,导致none-ls无法解析,常见触发原因:
- 项目
.eslintrc系列配置文件存在语法错误(比如JSON格式漏逗号、引号不匹配,或JS配置文件有未闭合的括号) - 全局安装的eslint_d与项目本地eslint版本冲突,执行时输出错误日志而非标准JSON
- eslint_d未正确识别文件类型,或none-ls调用参数有误
修复步骤
终端验证执行结果
进入项目目录,直接在终端运行:eslint_d your-test-file.js若输出不是标准JSON而是报错信息,优先修复eslint配置或重装工具:
# 全局重装eslint_d npm install -g eslint_d # 或强制使用项目本地版本 npx eslint_d your-test-file.js修正none-ls配置
确保eslint_d的导入方式正确(结合none-ls-extras),可显式指定支持的文件类型:require("none-ls.diagnostics.eslint_d").with({ filetypes = { "javascript", "javascriptreact", "typescript", "typescriptreact", "json" }, -- 若Mason安装的路径未在系统PATH中,可手动指定执行文件路径 -- command = vim.fn.stdpath("data") .. "/mason/bin/eslint_d" })排查项目配置文件
检查项目根目录的.eslintrc.json/.eslintrc.js,修复JSON格式错误或JS语法问题。
二、oxlint/biome 正确配置方法
报错原因
“failed to load builtin oxlint” 错误的核心问题:
- oxlint/biome不属于none-ls内置源,必须从
none-ls-extras.nvim导入,而非null_ls.builtins - 原配置存在Lua语法错误(注释后的
null_ls.builtins.diagnostics.biome行末尾缺少逗号,导致列表解析失败)
正确配置示例
return { "nvimtools/none-ls.nvim", dependencies = { "nvimtools/none-ls-extras.nvim", }, config = function() local null_ls = require("null-ls") null_ls.setup({ sources = { -- 使用oxlint(从none-ls-extras导入) require("none-ls.diagnostics.oxlint"), -- 或切换为biome(二选一,注释另一个) -- require("none-ls.diagnostics.biome"), null_ls.builtins.formatting.stylua, null_ls.builtins.formatting.prettier, null_ls.builtins.formatting.black, null_ls.builtins.formatting.isort, null_ls.builtins.formatting.clang_format, null_ls.builtins.formatting.google_java_format, null_ls.builtins.diagnostics.checkstyle, null_ls.builtins.diagnostics.cppcheck, null_ls.builtins.diagnostics.stylelint, }, }) vim.keymap.set("n", "<leader>gf", vim.lsp.buf.format, {}) end, }
额外注意事项
- 确保已通过Mason成功安装工具:在Neovim中执行
:MasonInstall oxlint或:MasonInstall biome - 若仍无法加载,可显式指定可执行文件路径:
require("none-ls.diagnostics.oxlint").with({ command = vim.fn.stdpath("data") .. "/mason/bin/oxlint" })
内容的提问来源于stack exchange,提问作者Death Scythe
相关产品推荐
相关产品推荐

