接下来无法加载 SWC 二进制文件

Next failed to load SWC binary

当尝试 运行 使用 nextjs npm 运行 命令时,dev 显示错误 - 无法加载 SWC 二进制文件,请在此处查看更多信息:https://nextjs.org/docs/messages/failed-loading-swc.

我已经尝试卸载 node 并使用版本 16.13 重新安装它,但没有成功,在 vercel 页面上,但到目前为止没有成功。有什么建议吗?

此外,我注意到这是 NextJS 讨论的当前问题 page and it has to do with the new Rust-base compiler,它比 Babel 更快。

这在 nextJS 文档中作为 suggeted 工作,但它带走了 Rust 编译器及其所有好处...这是我为那些最终陷入困境的人所做的...

第 1 步。添加此行或编辑 next.json.js

{
swcMinify: false // it should be false by default 
}

第 2 步。将“.babelrc”文件添加到项目根目录

第 3 步。将此代码段添加到新文件“.babelrc”

{
"presets": ["next/babel"]
}

第 4 步,您需要 运行 此命令,因为第 1-3 步将删除 SWC 加载失败错误,但是当您 运行 构建命令时,您会注意到另一个错误。所以运行这也是

npm install next@canary

希望这对您有所帮助

我在 Windows 11 上遇到了同样的问题。我将 NodeJS 升级到 17.0.1。之后,一切正常。

我是 next.js 的初学者,我遇到了同样的错误。搜索后我找到了添加 .babelrc 的解决方案。但是使用它无法获得SWC的功能。

今天我得到了一个真正的解决方案,使用这个示例项目命令。当我们创建新项目时,swc 将正常工作,不会出现任何错误。

command- npx create-next-app 'your_project_name' --use-npm --example "https://github.com/vercel/next-learn/tree/master/basics/learn-starter"

如果您遇到任何其他问题,请告诉我。

在根目录下制作.babelrc。并添加以下代码。 { "presets": ["next/babel"], "plugins": [["styled-components", { "ssr": true }]] }

我有同样的问题,只是使用 mac/window 终端而不是 VScode 集成终端

只需 运行 'npm i' 或 'yarn' 然后重新启动服务器。

这个错误是因为 next js 使用基于 Rust 的编译器来编译 JavaScript 这比 babel 快得多但是这不兼容所有系统架构,在其他情况下你必须禁用它来解决这个问题编译器并使用原生的 babel 编译器。这是通过在您的根目录中创建一个 .babelrc 文件并将下面的代码添加到文件中来完成的;

{"presets": ["next/babel"]}

您可以查看此 link 了解更多详情:SWC Failed to Load - NEXTJS DOCS

如果您使用 Docker,只需将 RUN npm install -D @swc/cli @swc/core 添加到 Docker 文件。

删除项目中的 package-lock.json 文件和 node_modules 目录,然后在终端上删除 运行 npm install

我用的是 MacBook m1。 Joon Kyoung 的回答对我有用-> 删除项目中的 package-lock.json 文件和 node_modules 目录,然后在终端上 运行 npm install。

发生这种情况是因为您在项目中卸载了 npm 模块或 yarn 只需 运行 这个命令/安装节点包,你就会得到回报

如果您 运行 正在使用 Docker,我必须使用 node:14-buster-slim 作为基础图像才能使其正常工作。我从 https://github.com/vercel/next.js/discussions/30468#discussioncomment-1598941.

得到了我的工作解决方案的想法

我的 multi-staged Docker 文件如下所示:


############### Base Image ###############
FROM node:14-buster-slim AS base
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .

############### Build Image ###############
FROM base AS build

ARG app_env=production
ARG app_port=3000

WORKDIR /build
COPY --from=base /app ./

ENV NODE_ENV=${app_env}
ENV PORT=${app_port}
EXPOSE ${app_port}

RUN npm run build

############### Deploy Image ###############
FROM node:14.18.1-alpine AS production

ARG app_env=production
ENV NODE_ENV=${app_env}
WORKDIR /app
COPY --from=build /build/package*.json ./
COPY --from=build /build/.next ./.next
COPY --from=build /build/public ./public
RUN npm install next

EXPOSE 3000
CMD npm run start

如果您想将 docker-compose 用于 运行 您的服务,运行 宁 next devdocker-compose.yaml 文件将如下所示:

version: "3"

services:
  web-server:
    env_file:
      - ./.env
    build:
      context: .
      dockerfile: Dockerfile
      target: base
    command: npm run dev
    container_name: web-server
    restart: always
    volumes:
      - ./:/app
      - /app/node_modules
    ports:
      - "${NODEJS_PORT}:3000"

删除 node_modules 目录和 package-lock.json

运行 npm i 安装依赖项

如果你在 MAC OS,你可以直接在终端运行下面的命令

rm -rf node_modules && rm package-lock.json && npm i

在您的 NextJS 项目中,您有这个名为 .eslintrc.json 的文件,在这个文件中

您有以下代码

{
  "extends": "next/core-web-vitals"
}

Replace it with

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

如果您阅读了文档 (170https://nextjs.org/docs/messages/failed-loading-swc),它说您需要一个我在 https://docs.microsoft.com/en-US/cpp/windows/latest-supported-vc-redist?view=msvc- 下载的可分发文件,这对我有用

只需下载 Redistributable C++ 2015

在 Windows 上解决此问题的最佳方法是安装“Microsoft Visual C++ Redistributable”

发生错误是因为 Next.js 正在使用 Rust-based 编译器 SWC 编译 JavaScript/TypeScript,为此 SWC 需要下载与您的系统特定兼容的二进制文件。

解决这个问题:

Just go to Microsoft Visual C++ Redistributable to download latest supported Microsoft Visual C++ Redistributable.

或者,您可以直接从这里下载(请先检查您的版本)

Permalink for latest supported x64 version

The X64 Redistributable package contains both ARM64 and X64 binaries. This package makes it easy to install required Visual C++ ARM64 binaries when the X64 Redistributable is installed on an ARM64 device.

Permalink for latest supported x86 version

Permalink for latest supported ARM64 version