You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js fs.unlinkSync相对路径失效问题求助

为什么相对路径../public/uploads/image.jpg无效?

核心原因是Node.js中fs模块的相对路径基准是进程启动目录,不是脚本文件所在目录。

你的项目结构:

  • 项目根目录(root)
    • public > uploads > image.jpg
    • routes > Imagedelete.js

两种路径的实际解析结果

  • public/uploads/image.jpg 能正常工作:
    你应该是在项目根目录下启动的Node服务(比如执行node app.js),此时进程的工作目录就是root。这个路径会被解析成root/public/uploads/image.jpg,正好匹配图片的真实位置,所以fs能找到并删除文件。

  • ../public/uploads/image.jpg 触发错误:
    这个路径是假设以routes目录为基准的写法,但Node不会这么解析。它会以进程启动的root目录为基准,把路径解析成root/../public/uploads/image.jpg,也就是跳出项目根目录的/public/uploads/image.jpg,系统找不到这个文件,自然报错。

靠谱的解决办法

如果想基于脚本所在目录来定位文件,用__dirname(当前脚本的绝对目录)配合path.join拼接绝对路径:

const fs = require('fs');
const path = require('path');

const imagePath = path.join(__dirname, '../public/uploads/image.jpg');
fs.unlinkSync(imagePath);

__dirname会返回root/routes,和../public/uploads/image.jpg拼接后,就得到准确的root/public/uploads/image.jpg绝对路径,不管你从哪个目录启动服务,都能精准找到文件。

内容的提问来源于stack exchange,提问作者Ayush Sajwan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 02:15:57