Next.js静态导出部署Cloudflare失败,报Unexpected token '?'错误求助
解决Next.js部署Cloudflare时
next build报SyntaxError: Unexpected token '?'的问题 核心原因
报错中的??是空值合并运算符,属于ES2020语法特性,仅Node.js 14.0.0及以上版本支持。Cloudflare构建环境默认使用的Node.js版本可能低于该要求,导致无法解析该语法。
具体解决步骤
- 指定Node.js版本:在项目根目录创建
.nvmrc文件,写入你本地开发时使用的Node.js版本(比如18或16,需≥14.0.0),Cloudflare构建时会自动读取该文件使用对应版本。 - 通过package.json配置版本要求:在package.json中添加以下配置,强制构建环境使用符合要求的Node.js版本:
"engines": { "node": ">=14.0.0" } - 匹配Next.js与Node.js版本:确认你的Next.js版本对应的Node.js要求——比如Next.js 12+需要Node.js 14.6+,Next.js 13+需要Node.js 16.8+,确保两者版本兼容。
- 清理缓存重新构建:执行
rm -rf node_modules .next,再运行npm install,之后重新执行next build && next export,避免缓存引发的版本冲突问题。
验证方式
在本地使用和Cloudflare指定的相同Node.js版本执行next build,如果能成功构建,说明版本问题已解决,部署到Cloudflare即可正常运行。
内容的提问来源于stack exchange,提问作者Struan Mclean
相关产品推荐
相关产品推荐

