Error: Cannot read config file: X:\package.json

Error: Cannot read config file: X:\package.json

我在 VS Code 中使用 eslint。可以找到 eslint 的配置 here.

我的开发环境使用 ESLint v3.10.2、Node.js v5.4.1、npm v3.3.12 和 VS Code v1.7.2。

问题是当我用 .js 文件打开 VS Code 时,我可以看到如下所示的输出日志,

[Info  - 11:36:58 AM] ESLint server is running.
[Info  - 11:37:00 AM] ESLint library loaded from: X:\path-to-source\Source\node_modules\eslint\lib\api.js
[Error - 11:37:03 AM] Cannot read config file: X:\package.json Error: Cannot read config file: X:\package.json Error: Unexpected token : in JSON at position 9

eslint 服务器能够 运行 但无法从当前根文件夹中读取 package.json 文件。相反,它会尝试从驱动器的根目录加载 package.json,即 X:

为确保问题不在于 VS Code 插件,我尝试使用 eslint CLI 对文件进行 lint,但失败并出现相同的错误。

$ eslint app/**
Cannot read config file: X:\package.json
Error: Cannot read config file: X:\package.json
Error: Unexpected token :
SyntaxError: Cannot read config file: X:\package.json
Error: Cannot read config file: X:\package.json
Error: Unexpected token :
    at Object.parse (native)
    at loadJSONConfigFile (A:\use folder\AppData\Roaming\npm\node_modules\eslint\lib\config\config-file.js:120:21)

我不明白为什么 eslint 在驱动器 X: 的根目录而不是当前工作目录中寻找 package.json

ESLint 使用 configuration cascade,这意味着它会尽可能向上遍历,同时合并配置。在您的工作目录的 .eslintrc 中,您可以添加 { "root": true } 以将 ESLint 的配置搜索限制在您的工作目录中。