尝试使用 nextjs npm run dev 运行命令时显示错误 - 无法加载 SWC 二进制文件,请在此处查看更多信息:https ://nextjs.org/docs/messages/failed-loading-swc 。
我尝试在 vercel 页面上卸载节点并使用 16.13 版再次重新安装,但没有成功,但到目前为止没有成功。有小费吗?
另外,我注意到这是 NextJS 讨论页面上的一个当前问题,它与新的基于 Rust 的编译器有关,它比 Babel 更快。
删除项目中的package-lock.json
文件和node_modules
目录,然后npm install
在终端上运行。
这按照nextJS文档的建议工作,但它带走了 Rust 编译器及其所有好处......这是我为那些最终陷入困境的人所做的......
步骤 1. 添加此行或编辑 next.json.js
{
swcMinify: false // it should be false by default
}
步骤 2. 将“.babelrc”文件添加到项目根目录
步骤 3. 将此代码段添加到新文件“.babelrc”中
{
"presets": ["next/babel"]
}
第 4 步,您需要运行此命令,因为第 1-3 步将删除 SWC failed to load 错误,但是当您运行 build 命令时,您会注意到另一个错误。所以也运行这个
npm install next@canary
希望这可以帮助
只需运行“npm i”或“yarn”,然后重新启动服务器。
如果您使用 Docker,只需添加RUN npm install -D @swc/cli @swc/core
到 Dockerfile。
我有同样的问题,只使用 mac/window 终端而不是 VScode 集成终端
在根目录中制作 .babelrc。并添加以下代码。
{ "presets": ["next/babel"], "plugins": [["styled-components", { "ssr": true }]] }
我用的是 MacBook m1。Joon Kyoung 的回答对我有用-> 删除项目中的 package-lock.json 文件和 node_modules 目录,然后在终端上运行 npm install 。
这是因为您在项目中卸载了 npm 模块或纱线,只需运行此命令/安装节点包,您就会得到回报
如果您使用 Docker 运行,我必须使用node:14-buster-slim
它作为我的基本映像才能使其工作。我从https://github.com/vercel/next.js/discussions/30468#discussioncomment-1598941得到了我的工作解决方案的想法。
我的多阶段 Dockerfile 如下所示:
############### 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
来运行你的服务,docker-compose.yaml
运行的文件next dev
看起来像这样:
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"
我是 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"]
}
出现此错误是因为 next js 使用基于 Rust 的编译器来编译 JavaScript,它比 babel 快得多,但这与所有系统架构不兼容,除此之外,您必须禁用此编译器并使用本机 babel 编译器。这是通过在你的根目录中创建一个 .babelrc 文件并将下面的代码添加到文件中来完成的;
{"presets": ["next/babel"]}
您可以查看此链接以获取更多详细信息:SWC 无法加载 - NEXTJS DOCS
我在 Windows 11 上遇到了同样的问题。我将 NodeJS 升级到 17.0.1。之后,现在一切正常。
使用终端或 CMD 执行 git 操作。
如果您无法使用npm i解决此问题,您可以尝试使用系统终端执行 git 操作。