You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署Next.js应用至GCP时遇Unexpected token '?'错误求助

解决GCP Flex环境部署Next.js时的Nullish Coalescing运算符错误

问题原因

错误提示的SyntaxError: Unexpected token '?'表明部署环境使用的Node.js版本低于14(空值合并运算符??在Node.js 14及以上才支持),尽管你在app.yaml中配置了nodejs_version: "18",但GCP Flex环境的构建流程可能没有正确加载指定的Node版本。

解决步骤

1. 在package.json中添加engines字段

明确指定Node.js版本,强制GCP构建环境使用符合要求的版本:

{
  "engines": {
    "node": ">=18.13.0",
    "npm": ">=8.19.3"
  }
}

2. 添加版本锁定文件

在项目根目录创建.nvmrc文件,内容为:

18.13.0

或者创建.node-version文件,内容同样为18.13.0,GCP的构建系统会读取这些文件来确定使用的Node版本。

3. 手动指定Docker构建环境(可选)

如果上述方法仍不生效,可通过Dockerfile完全控制构建环境:

  • 修改app.yaml,添加构建配置:
runtime: nodejs
env: flex
entrypoint: npm run start
automatic_scaling:
  min_num_instances: 1
  max_num_instances: 5
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10
env_variables:
  NODE_ENV: 'production'
# 新增构建配置
build:
  dockerfile: Dockerfile
  • 在项目根目录创建Dockerfile:
FROM node:18.13.0-slim

WORKDIR /app

COPY package*.json ./
RUN npm ci --only=production

COPY . .

RUN npm run build

CMD ["npm", "start"]

4. 清理缓存后重新部署

部署前清理GCP构建缓存,确保配置生效:

gcloud app deploy --no-cache

验证方法

部署时查看构建日志,确认Node版本信息:

Step #2: Node.js version: v18.13.0

内容的提问来源于stack exchange,提问作者TESTA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 14:22:42