在 Node.js 里处理 Linux 路径,核心原则只有一个:永远用 path 模块,不要手写字符串拼接路径。下面按常见场景给你一个实用指南。
✅ 用 path 模块处理路径
❌ 不要自己拼 / 或 \\
const path = require('path');
Node.js 的 path 模块在 Linux / macOS / Windows 下都会自动适配。
path.join(__dirname, 'data', 'config.json');
Linux 实际解析为:
/当前项目目录/data/config.json
✅ 优点:
/ 或少 / 出错path.resolve('/usr/local/app', 'logs', 'app.log');
Linux 结果:
/usr/local/app/logs/app.log
| 场景 | Node.js 推荐写法 |
|---|---|
| 当前文件目录 | __dirname |
| 当前工作目录 | process.cwd() |
| 拼接路径 | path.join() |
| 解析成绝对路径 | path.resolve() |
| 取文件名 | path.basename() |
| 取目录名 | path.dirname() |
| 取扩展名 | path.extname() |
~(用户目录,Node 不识别)❌ 错误:
'~/logs/app.log'
✅ 正确:
const os = require('os');
const home = os.homedir();
const logPath = path.join(home, 'logs', 'app.log');
/var /tmp /etc 等系统路径path.join('/var', 'log', 'myapp.log');
Linux:
/var/log/myapp.log
const dataPath = path.join(process.env.DATA_DIR || '/data', 'file.json');
即使路径对了,也要确认权限:
ls -ld /your/path
Node 中遇到:
EACCES: permission denied
通常是:
解决:
sudo chown -R $(whoami) /your/path
# 或
chmod 755 /your/path
| 系统 | 分隔符 |
|---|---|
| Linux | / |
| Windows | \ |
✅ path.join() / path.resolve() 会自动处理
const path = require('path');
const configPath = path.join(__dirname, 'config', 'app.json');
console.log(configPath);
// /home/app/project/config/app.json
❌ 手写路径:
__dirname + '/config/app.json'
✅ 正确:
path.join(__dirname, 'config', 'app.json');
如果你愿意,可以告诉我:
我可以直接帮你写一段 Linux 下可用的 Node.js 路径配置代码。