解析错误:找不到模块“next/babel”

mit*_*eko 9 babeljs next.js

我在创建的每个新 Next.js 项目中都遇到了这个错误。该页面可以毫无问题地编译,它只是在每个 js 文件的第一行一直显示为错误。

解析错误:找不到模块“next/babel”需要堆栈:

  • D:\app\next_app\ratu-seo\node_modules\next\dist\compiled\babel\bundle.js
  • D:\app\next_app\ratu-seo\node_modules\next\dist\compiled\babel\eslint-parser.js
  • D:\app\next_app\ratu-seo\node_modules\eslint-config-next\parser.js
  • D:\app\next_app\ratu-seo\node_modules@eslint\eslintrc\lib\config-array-factory.js
  • D:\app\next_app\ratu-seo\node_modules@eslint\eslintrc\lib\index.js
  • D:\app\next_app\ratu-seo\node_modules\eslint\lib\cli-engine\cli-engine.js
  • D:\app\next_app\ratu-seo\node_modules\eslint\lib\cli-engine\index.js
  • D:\app\next_app\ratu-seo\node_modules\eslint\lib\api.js
  • c:\Users\Admin.vscode\extensions\dbaeumer.vscode-eslint-2.1.23\server\out\eslintServer.js

Jee*_*cha 316

笔记You don't need to create extra .babelrc file

In your NextJS Project you have this file , named .eslintrc.json , In this file

你有以下代码

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

Replace it with

{
  "extends": ["next/babel","next/core-web-vitals"]
}

Run Code Online (Sandbox Code Playgroud)

注意:如果您仅替换为

{
   "extends": ["next/babel"]
}
Run Code Online (Sandbox Code Playgroud)

红色错误标志将会消失,但代码不会编译并给出编译错误。

  • 谢谢!并同意,应该在顶部。添加 .babelrc 文件将禁用 NextJS v12 中的 SWC (9认同)
  • 为什么他们没有将其设为默认值? (2认同)

Cra*_*lly 141

我遇到了同样的问题 - 但只有当我没有直接打开项目文件夹时。它似乎与需要如何为工作区配置 ESLint 有关。

此外,当前接受的答案适用于 VSCode,但npm run lint对我来说却中断了。

TL;DR - 请参阅指向此博客的答案。这为我解决了这个问题。

一些细节

例如,如果我有:

~
|  -- some_folder
|     | -- project_1
|     | -- project_2
|     ...files relating to both projects...
Run Code Online (Sandbox Code Playgroud)

我常常会只是cd ~/some_folder && code .

但后来我遇到了与您遇到的相同的错误。但是,如果我cd ~/some_folder/project_1 && code .那么一切都会正常。

如果您也是这种情况,那么您需要(如上面的链接所述)是:

  • 创建工作区配置
  • 指定需要运行 ESLint 的文件夹

您可以通过 VSCode 轻松完成此操作。最终结果(按照上面的示例)是一个~/some_folder/.vscode/settings.json以内容命名的文件

~
|  -- some_folder
|     | -- project_1
|     | -- project_2
|     ...files relating to both projects...
Run Code Online (Sandbox Code Playgroud)

  • 这为我解决了这个问题。我有一个单一存储库,其中有两个相互影响的不同 eslint 配置。通过如上所述创建工作区配置,问题就消失了。 (8认同)

Sar*_*rki 32

在您的根目录中创建名为 .babelrc 的文件并添加此代码

{
  "presets": ["next/babel"],
  "plugins": []
}
Run Code Online (Sandbox Code Playgroud)

并在 .eslintrc 中将现有代码替换为

{
  "extends": ["next/babel"]
}
Run Code Online (Sandbox Code Playgroud)

  • 一旦我替换了 eslintrc 扩展,它就消失了!十分感谢! (6认同)
  • 这可能有哪些副作用? (6认同)
  • 谢谢!由于某种原因,即使在使用 create-next-app 进行初始安装时,我也会遇到错误。这解决了它! (5认同)
  • 我尝试了这个,但奇怪的是 eslint 停止工作了。您知道造成这种情况的原因吗? (5认同)
  • 听起来已经过时的答案,因为 SWC 现在是默认值。我在 v13 应用程序中遇到这个问题,非常奇怪 (4认同)
  • @DonCarleone 阅读此文档 https://nextjs.org/docs/advanced-features/customizing-babel-config (2认同)

Rom*_*mne 22

用于在根文件夹中Nextjs 12添加prettier文件。.eslintrc.json

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

  • 这对我来说是正确的答案。Babel 不是我的 NextJS 项目的依赖项,这是更漂亮的扩展的结果。添加不需要的 babel 配置或引用 babel 的 eslint 扩展是一种错误。 (3认同)
  • 我尝试禁用 prettier 扩展,但它还不够,我必须应用此修复程序...仍然是一个比另一个更好的答案,因为 Next.js 不再使用 Babel 作为默认值。 (2认同)

小智 16

就我而言,当我在 VSCode 中编码并用作包管理器时,就会出现问题pnpm,我在 StackOverflow 中尝试了很多方法,最后,我发现这是 VSCode ESLint 插件的职责。

因此,要在不卸载插件的情况下解决问题,请在 中添加以下配置.vscode/settings.json并重新加载编辑器。

{
  "eslint.packageManager": "pnpm"
}
Run Code Online (Sandbox Code Playgroud)


Avr*_*olz 14

使用 Next.js、TypeScript 和 Tailwind CSS,我使用以下内容更新了.eslintrc.json文件:

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

然后ctrl + shift + p搜索ESLint: Restart ESLint Server.


小智 12

对我来说,可以在应用程序版本的 NextJS 13 中编辑此文件:.eslintrc.json

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


Hus*_*tib 10

prettier只需添加文件即可对我起作用.eslintrc

{
  "extends": ["next", "prettier"]
}
Run Code Online (Sandbox Code Playgroud)


小智 9

尝试将.eslintrc.json文件更新为

{
  "extends": ["next", "prettier","next/core-web-vitals"],
  "plugins": ["prettier"]
}
Run Code Online (Sandbox Code Playgroud)

如果您还没有安装 prettier 插件,请安装它

npm install eslint-plugin-prettier@latest --save-dev
Run Code Online (Sandbox Code Playgroud)

不必包含.babelrc文件,因为它将替换 Nextjs SWC 编译器 S


小智 6

我遇到了同样的问题 - 关闭 IDE 并使用项目文件夹重新打开它!


ImB*_*IOS 6

我的问题

\n

我在使用 Turborepo 的 PNPM、ESLint 和 Monorepo 架构的项目中发现了此错误。

\n

\xe2\x9a\xa0\xef\xb8\x8f 警告!

\n

2023 年 8 月 27 日更新:我创建了一个新的 Turborepo 项目,并再次遇到了这个问题,我发现,实施此解决方案将默默地禁用整个 ESLint 系统。

\n

请小心!我建议不要再使用此解决方案!

\n

我的解决方案

\n

将其添加到 ESLint 配置文件中:

\n
parserOptions: {\n    babelOptions: {\n      presets: [require.resolve(\'next/babel\')],\n    },\n  },\n
Run Code Online (Sandbox Code Playgroud)\n