1. 环境变量配置问题
/usr/local/bin或用户自定义的~/.npm-global/bin)添加到系统PATH中,会导致无法在任意目录下使用node、npm命令,表现为“command not found”。解决方法:编辑~/.bashrc(bash)或~/.zshrc(zsh)文件,添加export PATH="$PATH:/path/to/node/bin"(替换为实际路径),然后执行source ~/.bashrc使配置生效。NODE_ENV(如development、production)区分环境,会导致应用加载错误的配置文件(如开发环境用config.dev.json,生产环境用config.prod.json)。解决方法:在启动命令中指定环境变量(如NODE_ENV=production node app.js),或在代码中通过process.env.NODE_ENV判断环境。2. 权限管理问题
npm install -g安装全局模块时,因默认目录(/usr/local/lib/node_modules)属于root用户,普通用户会遇到“EACCES: permission denied”错误。解决方法:① 使用sudo npm install -g(不推荐,存在安全风险);② 更改npm全局安装路径(mkdir ~/.npm-global && npm config set prefix '~/.npm-global'),并将新路径添加到PATH;③ 使用nvm(Node Version Manager)在用户目录下安装Node.js,避免权限问题。sudo node app.js会让整个应用以root运行,存在安全隐患。解决方法:① 使用setcap赋予Node.js二进制文件端口权限(sudo setcap 'cap_net_bind_service=+ep' $(which node));② 使用反向隧道(如authbind)或进程管理工具(如PM2)以非root用户运行应用。/var/log)时,若用户无写入权限,会导致“EACCES”错误。解决方法:① 创建专用日志目录(如/var/log/my-node-app),并设置用户组所有权(sudo chown nodeapp:nodeapp /var/log/my-node-app)和权限(sudo chmod 750 /var/log/my-node-app);② 使用logrotate管理日志轮转,避免日志文件过大。3. 版本兼容性问题
node-sass)依赖系统库(如glibc),若系统库版本过低(如CentOS 7默认glibc版本为2.17,而模块需要2.27),会报“GLIBC_XX not found”错误。解决方法:① 更新系统库(如sudo yum update glibc);② 使用与系统库兼容的Node.js版本(如通过nvm安装LTS版本);③ 使用Docker容器封装应用及依赖,避免系统库冲突。package.json中指定"engines": { "node": ">=14.0.0" },而当前使用Node.js 12),会导致安装或运行时报错。解决方法:① 使用nvm切换Node.js版本(nvm install 14 && nvm use 14);② 使用npm install --legacy-peer-deps忽略peer依赖冲突(不推荐长期使用)。4. 依赖管理问题
npm install失败(如“ETIMEDOUT”“ERESOLVE unable to resolve dependency tree”)。解决方法:① 切换国内镜像源(如淘宝npm镜像:npm config set registry https://registry.npmmirror.com);② 使用npm install --verbose查看详细错误日志,定位具体依赖冲突;③ 使用yarn或pnpm替代npm,提升安装速度和依赖管理能力。gulp、webpack)。解决方法:① 确认npm全局安装路径(npm config get prefix),并将其添加到PATH(如export PATH="$PATH:$(npm config get prefix)/bin");② 使用npx运行全局包(如npx gulp),避免路径问题。5. 性能与安全配置问题
async/await或Promise处理异步操作,避免同步阻塞;② 使用process.memoryUsage()监控内存使用,通过heapdump模块分析内存泄漏;③ 使用cluster模块开启多进程,充分利用多核CPU。key与cert不匹配),导致浏览器报“不安全连接”。解决方法:① 使用Let’s Encrypt获取免费SSL证书(sudo certbot --nginx);② 配置Node.js应用使用HTTPS(const https = require('https'); const fs = require('fs'); const options = { key: fs.readFileSync('key.pem'), cert: fs.readFileSync('cert.pem') }; https.createServer(options, app).listen(443));③ 定期检查证书有效期(如使用cron任务每月提醒)。6. 日志管理问题
app.log达到几GB),影响系统性能。解决方法:① 使用logrotate工具配置日志轮转(创建/etc/logrotate.d/my-node-app文件,设置daily rotate 14 compress等参数);② 在应用中使用日志库(如winston、bunyan),支持日志分级(info/warn/error)和自动轮转。-rw-r--r--),导致其他用户(如运维人员)无法读取日志,或应用无法写入日志(如“EACCES”错误)。解决方法:① 应用创建日志文件时指定权限(fs.createWriteStream('/var/log/app.log', { mode: 0o640 }));② 确保日志目录归属正确(chown nodeapp:nodeapp /var/log/app.log)。