ESLint:类型错误:this.libOptions.parse 不是函数

The*_*gon 249 node.js webstorm eslint eslintrc typescript-eslint

我开始在 WebStorm 2022.2.1 Build #WS-222.3739.57 上使用 Next.js。我创建了一个新的 Next.js 项目并启用了 TypeScript,仅此而已。

错误如下图所示:

TypeError: this.libOptions.parse is not a function

TypeError: this.libOptions.parse is not a function
    at ESLint8Plugin.<anonymous> (C:\Program Files\JetBrains\WebStorm 2022.1.2\plugins\JavaScriptLanguage\languageService\eslint\bin\eslint8-plugin.js:139:64)
    at step (C:\Program Files\JetBrains\WebStorm 2022.1.2\plugins\JavaScriptLanguage\languageService\eslint\bin\eslint8-plugin.js:44:23)
    at Object.next (C:\Program Files\JetBrains\WebStorm 2022.1.2\plugins\JavaScriptLanguage\languageService\eslint\bin\eslint8-plugin.js:25:53)
    at C:\Program Files\JetBrains\WebStorm 2022.1.2\plugins\JavaScriptLanguage\languageService\eslint\bin\eslint8-plugin.js:19:71
    at new Promise (<anonymous>)
    at __awaiter (C:\Program Files\JetBrains\WebStorm 2022.1.2\plugins\JavaScriptLanguage\languageService\eslint\bin\eslint8-plugin.js:15:12)
    at ESLint8Plugin.invokeESLint (C:\Program Files\JetBrains\WebStorm 2022.1.2\plugins\JavaScriptLanguage\languageService\eslint\bin\eslint8-plugin.js:133:16)
    at ESLint8Plugin.<anonymous> (C:\Program Files\JetBrains\WebStorm 2022.1.2\plugins\JavaScriptLanguage\languageService\eslint\bin\eslint8-plugin.js:120:44)
    at step (C:\Program Files\JetBrains\WebStorm 2022.1.2\plugins\JavaScriptLanguage\languageService\eslint\bin\eslint8-plugin.js:44:23)
    at Object.next (C:\Program Files\JetBrains\WebStorm 2022.1.2\plugins\JavaScriptLanguage\languageService\eslint\bin\eslint8-plugin.js:25:53)
Process finished with exit code -1
Run Code Online (Sandbox Code Playgroud)

我的Node.js版本是v16.15.1,ESLint版本是8.23.0。

这就是我的 devDependency 的样子;

  "devDependencies": {
    "@types/node": "18.7.13",
    "@types/react": "18.0.17",
    "@types/react-dom": "18.0.6",
    "eslint": "8.23.0",
    "eslint-config-next": "12.2.5",
    "prisma": "^4.2.1",
    "typescript": "4.8.2"
  }
Run Code Online (Sandbox Code Playgroud)

我的.eslintrc.json文件:

{
  "extends": "next/core-web-vitals"
}
Run Code Online (Sandbox Code Playgroud)

len*_*ena 346

该问题在WEB-57089中进行跟踪,并在 2022.2.2预览版中修复。

该问题是由 ESLint 8.23 中引入的更改引起的(违规上游提交:在 GitHub 上查看)。将 ESLint 降级到 8.22.x 或更早版本(使用npm install eslint@8.22.0 --save-exact)应该会有所帮助。

  • 2022.2.2 现已稳定发布。 (11认同)

Pav*_*lev 104

如果您正在寻找临时修复程序,您可以将ESLint版本“固定”到 8.22.0,并将package.json其设置为:

"eslint": "8.22.0"
Run Code Online (Sandbox Code Playgroud)

之后更新您的项目以返回到 8.22 而不是 8.23,即

  • 删除node_modules文件夹
  • 清理 package-lock.json (也将其删除)
  • 跑步npm install

或者在一个命令中:

rm -rf node_modules; rm package-lock.json; npm install
Run Code Online (Sandbox Code Playgroud)

希望这个问题能尽快得到解决


Moh*_*adi 71

我的朋友们,如果您使用Webstorm或任何Jetbrains产品,您可以在eslint 设置中使用此模式,它将永远修复。

  1. 设置(或“Alt + Shift + S”)

  2. 搜索“eslint”

  3. 选择“自动 ESLint 配置”

  4. 然后将下面的模式替换为现有模式:

    "**/*.(js|ts|jsx|tsx|html|vue)"
    
    Run Code Online (Sandbox Code Playgroud)

  • 这解决了我的 NextJS 13 项目的 Webstorm (2022.2.1) 问题,谢谢。 (2认同)

小智 31

对我来说,其他解决方案不起作用。

简单的 WebStorm 更新到版本 2022.2.3 就解决了这个问题。


Had*_*zar 30

我在使用 ESLint 和WebStorm时也遇到了同样的问题。

这是解决方案:

yarn add eslint@8.22.0 --save-exact

npm install eslint@8.22.0 --save-exact
Run Code Online (Sandbox Code Playgroud)