JavaScript 日志在 Linux 上报错,通常不是因为“Linux 本身报错”,而是运行环境、路径、权限、编码或依赖和你的本地(比如 Windows / macOS)不一样导致的。下面按最常见原因给你梳理一下:
Linux 是 严格区分大小写 的:
require('./Utils/Config') // Windows 能跑
require('./utils/config') // Linux 必报错
✅ 解决:
path.join(__dirname, 'xxx')Linux 对权限很严格:
Error: EACCES: permission denied
✅ 解决:
chmod +x app.js
chmod -R 755 yourdir
Windows 是 CRLF,Linux 是 LF
SyntaxError: Invalid or unexpected token
✅ 解决:
LFnode -v
Linux 上可能是:
??、?.)✅ 解决:
nvm use 18
Linux 服务器通常 没有 .env 自动加载
process.env.DB_HOST // undefined
✅ 解决:
export NODE_ENV=production
或用 dotenv
Linux 下:
Error: listen EACCES
✅ 解决:
sudofs.appendFileSync('/var/log/app.log')
Linux 不会自动建目录
✅ 解决:
fs.mkdirSync('/var/log', { recursive: true })
把完整报错日志贴出来,我可以直接帮你定位是哪一类问题。
例如:
Error: Cannot find moduleEACCESENOENTSyntaxErrorJS 在 Linux 报错,99% 是“环境差异”而不是代码逻辑问题。
如果你愿意,可以告诉我:
我可以直接给你精准解决方案。