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

pm2启动server.js时报块级声明非严格模式不支持语法错误

问题根因

你遇到的报错本质是PM2运行时调用了系统自带的低版本Node.js(v4.2.6),该版本对ES6块级声明语法支持不完善,才会抛出严格模式相关的语法错误,具体有两个触发原因:

  • 系统同时存在两个Node.js版本:nvm安装的v15.8.0仅对当前用户生效,而初始使用sudo npm i -g pm2安装时,sudo会重置环境变量,默认调用的是系统全局的v4.2.6版本Node来安装PM2,导致PM2的依赖包是适配低版本Node安装的,运行时自然调用低版本引擎
  • 环境变量优先级问题:初始状态下系统Node的路径在PATH中优先级高于nvm的Node路径,即使后续非sudo安装PM2,也可能出现调用错版本的情况

规范解决步骤

你之前临时修改PATH的方案是有效的,但稳定性不足:如果重启shell、切换用户或者升级nvm Node版本后,修改的PATH会失效,问题会复现。推荐使用nvm官方推荐的标准方案操作:

  1. 先彻底清理之前安装的PM2残留
# 切到root权限删除全局安装的旧PM2
sudo rm -rf /usr/local/lib/node_modules/pm2
sudo rm -rf /usr/local/bin/pm2
# 切回普通用户删除用户目录下的PM2缓存残留
rm -rf ~/.pm2
  1. 永久固定nvm Node版本的环境变量优先级
    把nvm的加载逻辑写到用户的shell配置文件里,重启也不会失效:
# 如果你用的是bash,执行下面的命令
echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.bashrc
echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> ~/.bashrc
echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"' >> ~/.bashrc
source ~/.bashrc

# 如果你用的是zsh,把上面的.bashrc全部替换成.zshrc即可

执行完后验证Node版本,确认返回正常:

node -v
# 正常应该返回v15.8.0
which node
# 正常应该返回/home/ubuntu/.nvm/versions/node/v15.8.0/bin/node
  1. 重新安装PM2
    不要加sudo,直接用当前用户的npm全局安装:
npm install -g pm2
# 安装完成后验证版本
pm2 -v
  1. 后续如果需要用sudo执行pm2命令,可以直接用nvm Node的绝对路径调用,避免sudo重置PATH找错Node:
sudo /home/ubuntu/.nvm/versions/node/v15.8.0/bin/pm2 start server.js

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:57:04