部署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
相关产品推荐
相关产品推荐

