若系统未安装Node.js或版本不符合项目要求,可通过以下方式解决:
sudo apt update && sudo apt install nodejs npm,安装后通过node -v和npm -v验证版本(注意:APT仓库版本可能较旧)。curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash,随后运行source ~/.bashrc加载配置;安装指定版本(如18.x):nvm install 18,切换版本:nvm use 18。执行npm install -g时若出现EACCES: permission denied错误,说明当前用户无系统目录写入权限。解决方法:
sudo npm install -g package-name(不推荐,可能引发安全隐患)。mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
~/.nvm),无需提权。项目依赖与Node.js版本不兼容时(如旧项目需特定版本),可通过以下方式解决:
package-lock.json或yarn.lock确保依赖版本一致。npm install package-name@version安装兼容版本(如npm install lodash@4.17.21)。nvm install 14 && nvm use 14切换。Node.js流(Stream)操作未捕获错误时,会导致进程崩溃。解决方法:
error事件监听:const fs = require('fs');
const readStream = fs.createReadStream('example.txt');
readStream.on('error', (err) => {
console.error('Stream error:', err.message);
});
try-catch:const fs = require('fs');
try {
const data = fs.readFileSync('example.txt', 'utf8');
console.log(data);
} catch (err) {
console.error('Read error:', err.message);
}
Node.js应用日志写入系统目录(如/var/log)时,可能因权限不足失败。解决方法:
sudo groupadd nodeapp
sudo useradd -g nodeapp nodeapp -s /bin/false
sudo mkdir -p /var/log/my-node-app
sudo chown nodeapp:nodeapp /var/log/my-node-app
sudo chmod 750 /var/log/my-node-app
const fs = require('fs');
const logStream = fs.createWriteStream('/var/log/my-node-app/app.log', {
flags: 'a',
mode: 0o640 // -rw-r-----
});
/etc/logrotate.d/my-node-app文件,内容如下:/var/log/my-node-app/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 640 nodeapp nodeapp
sharedscripts
postrotate
[ ! -f /var/run/my-node-app.pid ] || kill -USR1 `cat /var/run/my-node-app.pid`
endscript
}
若运行node或npm时提示“command not found”,需检查环境变量:
/usr/bin/node(或/usr/bin/nodejs)和/usr/bin/npm。~/.bashrc,添加export PATH=$PATH:/usr/bin/node:/usr/bin/npm,随后运行source ~/.bashrc。若应用出现未预期错误,可通过以下方式调试:
console.log:在关键位置输出变量值(简单快捷)。node --inspect-brk app.js,然后在Chrome浏览器打开chrome://inspect,点击“Open dedicated DevTools for Node”调试。launch.json),支持断点、变量监视等高级功能。