启动失败时,终端会输出关键错误提示(如语法错误、模块未找到、端口占用等)。仔细阅读错误信息,能快速定位问题类型(例如“Error: listen EADDRINUSE”表示端口占用,“Cannot find module ‘express’”表示模块缺失)。这是排查问题的第一步。
node -v和npm -v确认版本是否安装正确。nvm(Node Version Manager)管理多版本(推荐):curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
nvm install --lts # 安装最新的LTS版本
nvm use --lts # 切换至LTS版本
package.json中指定了"engines": {"node": ">=18.0.0"})。npm install安装package.json中列出的所有依赖。npm cache clean --force;node_modules文件夹和package-lock.json文件,再重新安装:rm -rf node_modules package-lock.json
npm install
npm install <package_name>。若错误提示“EADDRINUSE”(地址已使用),说明端口被其他进程占用。
lsof -i :端口号(如lsof -i :3000)查看占用进程;kill -9 <PID>(PID为进程ID);app.listen(3000)改为app.listen(3001))。node app.js中的app.js存在于当前目录);chmod添加执行权限(chmod +x app.js),或用chown修改所有者(sudo chown $USER:$USER app.js)。export VARIABLE_NAME=value(如export PORT=3000);~/.bashrc或~/.zshrc文件中,然后运行source ~/.bashrc生效。node --inspect-brk app.js(--inspect-brk会在第一行代码处暂停);chrome://inspect,点击“Open dedicated DevTools for Node”连接调试;launch.json配置文件)。logs/app.log),使用tail -f /path/to/logfile.log动态查看最新日志;journalctl查看Node.js服务日志(若用systemd管理):sudo journalctl -u your-nodejs-service-name -f
或查看系统日志:sudo tail -f /var/log/syslog。nvm升级Node.js:nvm install --lts && nvm use --lts;sudo npm install -g npm(或使用nvm自动升级)。若以上步骤无法解决,可在Stack Overflow、GitHub Issues等社区提问,提供以下信息:
node -v、npm -v);package.json内容);