ReactJS生产环境部署报错:SyntaxError: Unexpected token {
生产环境运行ReactJS项目报错问题
这是我首次尝试在生产环境运行ReactJS项目,可能遗漏了某些细节。
在服务器上,npm start运行完全正常。我想要切换到生产环境模式,于是执行了以下命令:
npm install -g serve npm run build # 成功创建/build文件夹 serve -s build
现在出现如下报错:
/usr/local/lib/node_modules/serve/build/main.js:4 import { cwd as getPwd, exit, env as env2, stdout } from "node:process"; ^ SyntaxError: Unexpected token { at Module._compile (internal/modules/cjs/loader.js:723:23) at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10) at Module.load (internal/modules/cjs/loader.js:653:32) at tryModuleLoad (internal/modules/cjs/loader.js:593:12) at Function.Module._load (internal/modules/cjs/loader.js:585:3) at Function.Module.runMain (internal/modules/cjs/loader.js:831:12) at startup (internal/bootstrap/node.js:283:19) at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
我遗漏了什么?
已尝试的操作
- 我的NodeJS服务器运行在3001端口,因此我尝试执行
serve -s build -l 3001,但仍出现相同报错 - 有人建议不要全局安装serve,而是执行
npm -S serve,但无效 - 执行
npx serve {...}同样无效(仅输出Unexpected token {)
解决方案
这个报错的核心原因是服务器上的Node.js版本过低,不支持serve最新版本使用的ES模块语法(比如import和node:process这种前缀导入)。
方法一:升级Node.js版本
- 先查看当前Node.js版本:
node -v
- 将Node.js升级到16.x及以上版本(serve最新版要求最低Node.js 16):
- 若用nvm管理版本:
nvm install 16 nvm use 16 - 若为系统自带Node.js,通过对应包管理器更新(如Ubuntu用
apt,CentOS用yum)。
- 若用nvm管理版本:
- 重新全局安装serve:
npm install -g serve
- 再次运行
serve -s build即可正常启动服务。
方法二:安装兼容低版本Node.js的serve旧版
如果暂时无法升级Node.js,可安装serve v14.x版本(该版本兼容更低的Node.js):
npm install -g serve@14
内容的提问来源于stack exchange,提问作者kristyna
相关产品推荐
相关产品推荐

