在 Linux 上运行 JavaScript 时出现“日志报错”,通常不是 JS 语法本身的问题,而是运行环境、权限、路径或日志写入方式导致的。下面按最常见原因 → 排查方法给你梳理一下。
报错示例
node: command not found
原因
node 不在 PATH 中✅ 解决
node -v
安装:
# Ubuntu / Debian
sudo apt install nodejs npm
# CentOS
sudo yum install nodejs npm
报错示例
ENOENT: no such file or directory, open '/var/log/app.log'
原因
✅ 解决
const fs = require('fs');
const path = require('path');
const logDir = '/var/log/app';
if (!fs.existsSync(logDir)) {
fs.mkdirSync(logDir, { recursive: true });
}
或提前创建目录:
sudo mkdir -p /var/log/app
报错示例
EACCES: permission denied
原因
/var/log、/root 等目录写日志✅ 解决
# 临时解决
sudo chmod 777 /var/log/app
# 正确做法
sudo chown -R $(whoami) /var/log/app
或日志写到用户目录:
const logPath = path.join(process.env.HOME, 'app.log');
错误写法
fs.writeFileSync('C:\\logs\\app.log', data);
✅ Linux 正确写法
fs.writeFileSync('/var/log/app.log', data);
✔ Linux 路径:
/常见情况
报错示例
Error: unsupported platform
✅ 解决
rm -rf node_modules package-lock.json
npm install
现象
✅ 解决
console.log(new Date().toLocaleString('zh-CN', {
timeZone: 'Asia/Shanghai'
}));
设置 Linux 时区:
timedatectl set-timezone Asia/Shanghai
运行前检查这 5 点:
node -v
pwd
ls -l 日志目录
whoami
df -h
JS 中:
console.log(process.platform);
console.log(process.cwd());
你可以直接贴出:
我可以 精确告诉你是哪一行导致的错误,以及如何改。