Next.js 14对树莓派4(ARMv7)无SWC支持?求解决方案
树莓派4 无法运行Next.js 14的解决方案
问题原因
Next.js 14依赖的SWC编译器未发布Linux ARMv7(树莓派4默认32位架构)的二进制包,Vercel仅维护到Next.js 13版本的对应包;直接使用Babel替代时,单纯配置.babelrc会与Next.js内置编译流程冲突,导致构建文件缺失错误。
可行解决办法
1. 切换到64位系统并使用ARM64架构的SWC包
树莓派4支持64位系统,若已安装64位Raspbian:
- 临时设置环境变量安装依赖:
npm_config_arch=arm64 npm install npm run dev - 或在项目根目录创建
.npmrc文件,永久指定架构:
之后重新执行arch=arm64npm install即可拉取适配ARM64的SWC包。
2. 降级到Next.js 13.x稳定版本
由于Next.js 13可正常运行,直接锁定版本:
npm install next@13.5.6 react@^18 react-dom@^18
同时修改package.json中的next版本为13.5.6,避免后续自动升级。
3. 手动编译ARMv7版本的SWC包(进阶方案)
若坚持使用Next.js 14,可自行编译对应架构的SWC包:
- 安装编译依赖:
sudo apt install rustc cmake build-essential - 克隆SWC仓库并切换至与Next.js 14匹配的版本(可查看
node_modules/next/package.json中@swc/core的版本号):git clone https://github.com/swc-project/swc.git cd swc git checkout <对应版本号> - 编译完成后,将产物替换至
node_modules/@next/swc-linux-arm-gnueabihf目录,或发布到本地npm仓库使用。
4. 正确配置Babel替代SWC
之前的Babel配置方式有误,需在next.config.js中禁用SWC:
/** @type {import('next').NextConfig} */ const nextConfig = { swcMinify: false, // 禁用SWC压缩 compiler: { removeConsole: false, }, } module.exports = nextConfig
保留.babelrc的配置:
{ "presets": ["next/babel"], "plugins": [] }
重新执行npm run dev即可,但注意Babel编译速度远慢于SWC。
内容的提问来源于stack exchange,提问作者Ini90
相关产品推荐
相关产品推荐

