如何基于现有代码搭建MERN栈?Ubuntu环境启动报错求助
问题原因
这个错误是因为你安装的concurrently@8.2.2使用了空值合并运算符(??),而你的Node.js版本低于14.0.0(该语法从Node.js 14.0.0开始支持),导致Node无法解析该语法。
解决方法
方案1:升级Node.js版本(推荐)
- 先检查当前Node版本:
node -v - 升级到LTS版本(比如18.x或20.x,MERN栈推荐长期支持版):
- 用nvm(Node版本管理器)安装(不破坏系统默认Node):
- 参考nvm官方文档完成nvm安装
- 重启终端后执行:
nvm install --lts nvm alias default lts/*
- 或者用NodeSource官方源安装:
- 导入对应版本的Node.js官方软件源
- 执行安装命令:
sudo apt-get install -y nodejs
- 用nvm(Node版本管理器)安装(不破坏系统默认Node):
- 升级完成后重新运行
npm start即可。
方案2:降级concurrently到兼容旧Node的版本
如果不想升级Node,可将concurrently降级到支持旧Node的版本(比如6.x,支持Node >=10):
npm uninstall concurrently npm install concurrently@6.5.1 --save
package.json优化建议
- 区分依赖类型:将
concurrently移到devDependencies(仅开发环境使用,生产环境无需):"dependencies": { "express": "^4.18.2", "mongoose": "^8.0.1" }, "devDependencies": { "concurrently": "^6.5.1" // 升级Node后可改为^8.2.2 } - 添加版本约束:用
engines字段指定Node和npm的最低版本,避免后续兼容问题:"engines": { "node": ">=18.0.0", "npm": ">=8.0.0" } - 完善脚本与环境区分:
- 添加前端构建脚本,用于生产环境部署:
"scripts": { "start": "concurrently \"npm run server\" \"npm run client\"", "server": "node server.js", "client": "cd client && npm start", "build": "cd client && npm run build", "prod": "npm run build && npm run server" // 生产环境先构建前端再启动服务 } - 开发时推荐用
nodemon自动重启服务器,安装后修改server脚本:npm install nodemon --save-dev"scripts": { "server": "nodemon server.js" }
- 添加前端构建脚本,用于生产环境部署:
- 补充项目元信息:完善描述、关键词等字段,便于后续维护:
"description": "基于MERN栈的房地产毕业设计网站", "keywords": ["mern", "real-estate", "full-stack", "graduation-project"], "author": "Kayla"
内容的提问来源于stack exchange,提问作者Kayla
相关产品推荐
相关产品推荐

