eslintneovimlinternone-ls

problem with eslint_d in neovim (none-ls)


I am having a problem with eslint_d in Neovim, where it only seems to work with json, whenever I open a Javascript or Typescript file, I get an error in the very first line even if the file is empty:

failed to decode json: Expected value but found invalid token at character 1

The linter doesn't seem to work as well, for example code like this won't generate an error or a warning:

"use strict";
a = 10; // should trigger an error: 'x' is not defined

Here's my current none-ls configuration:

return {
    "nvimtools/none-ls.nvim",
    dependencies = {
        "nvimtools/none-ls-extras.nvim",
    },
    config = function()
        local null_ls = require("null-ls")
        null_ls.setup({
            sources = {
                require("none-ls.diagnostics.eslint_d"),
                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,
}

I have looked everywhere for a solution but couldn't find anything, i also tried switching to oxlint and biome by installing them through Mason and modifying the configuration like this:

return {
    "nvimtools/none-ls.nvim",
    dependencies = {
        "nvimtools/none-ls-extras.nvim",
    },
    config = function()
        local null_ls = require("null-ls")
        null_ls.setup({
            sources = {
                null_ls.builtins.diagnostics.oxlint,
                -- or
                null_ls.builtins.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,
}

but both didn't work for some reason, and i kept getting an error:

[null-ls] failed to load builtin oxlint for method diagnostics; please check your config

Does anyone know what the problem with eslint_d is? or how can i switch to oxlint or biome instead? Thanks a lot!


Solution

  • You need to initialize eslint in your working directory, and for that you need a package.json file first.

    Run this in your terminal and you'll be fine.

    npm init --yes && npm init @eslint/config@latest