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

Git推送代码至Ubuntu服务器后遇Unexpected token语法错误求助

问题分析与解决方案

问题根源

这个错误是因为你服务器上的Node.js版本过低,不支持私有类方法(即带#前缀的类方法语法)。lru-cache的新版本使用了该语法,而旧版Node.js无法解析,导致抛出SyntaxError。

具体解决方案

1. 核对Node.js版本差异

先确认本地和服务器的Node.js版本:

  • 本地执行:node -v
  • 服务器执行:/usr/bin/node -v
    对比两者版本,服务器版本大概率低于14.6.0(私有类方法在Node.js 14.6.0+、12.17.0+开始支持,14.x及以上版本稳定兼容)。

2. 升级服务器Node.js版本

情况A:直接使用服务器系统的Node.js

用nvm管理Node版本(避免系统版本冲突):

  • 安装nvm后,执行以下命令安装并切换到兼容版本(比如18.x LTS):
    nvm install 18
    nvm use 18
    nvm alias default 18
    

之后重新运行你的app.js即可。

情况B:应用运行在Docker容器内

修改项目的Dockerfile,指定高版本的Node基础镜像,比如:

# 替换成兼容的Node镜像版本,比如18-alpine
FROM node:18-alpine

# 后续构建步骤...

重新构建Docker镜像并部署容器。

3. 降级lru-cache到兼容版本

如果暂时无法升级Node.js,可以降级lru-cache到不使用私有类方法的版本(v6.x系列):

  • 执行命令安装指定版本:
    npm install lru-cache@6 --save
    

安装完成后重启应用即可。

额外优化建议

  • 在package.json中添加engines字段,明确项目要求的Node.js版本:
    "engines": {
      "node": ">=14.6.0"
    }
    
  • 项目根目录创建.nvmrc文件,写入指定版本号(比如18),本地和服务器通过nvm use统一版本。
  • 不要将node_modules目录推送到Git,服务器部署时执行npm install重新安装依赖,避免跨平台编译差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 10:53:29