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

Next.js项目GitHub Actions构建报Unexpected token '?'错误求助

问题原因

你遇到的问题根本不在GitHub的runner环境里,而是服务器的SSH会话默认用了旧版Node。虽然你手动登录服务器时能用到新版Node,但通过GitHub Actions的SSH脚本连接时,shell不会自动加载你手动配置的Node环境(比如nvm的环境变量、自定义PATH),所以默认调用了系统自带的v12版本,导致不满足Next.js 13的版本要求,进而出现语法错误(?是ES2020的语法,Node12不支持)。

另外注意:你YAML里的setup-node步骤是给GitHub的ubuntu-runner用的,和服务器上的Node环境完全无关,服务器端的构建步骤才是报错的源头。

解决方法

以下几种方案任选其一:

方案1:在SSH脚本里指定Node的完整路径

先在服务器上手动执行which node,拿到新版Node的路径(比如/usr/local/bin/node),然后把SSH脚本里的npm命令换成带完整路径的:

script: |
  cd /var/www/frontend-test
  git fetch
  /usr/local/bin/npm install
  /usr/local/bin/npm run build
  pm2 reload frontend-test

方案2:加载Node环境配置(如果用nvm管理Node)

如果服务器是用nvm安装的新版Node,在SSH脚本开头先加载nvm的环境:

script: |
  cd /var/www/frontend-test
  git fetch
  source ~/.nvm/nvm.sh
  nvm use 18 # 换成你安装的Node版本
  npm install
  npm run build
  pm2 reload frontend-test

方案3:让SSH会话自动加载Node环境

修改服务器上的~/.bashrc或~/.profile文件,把Node的路径加到PATH最前面,比如:

export PATH="/usr/local/bin:$PATH" # 换成你的Node所在路径

或者如果用nvm,就在文件里加:

source ~/.nvm/nvm.sh
nvm use default # 设置默认Node版本为你需要的版本

保存后,下次SSH连接时就会自动加载正确的Node环境,脚本里直接用npm命令即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 07:42:39