如何正确使用path.resolve?src目录下生成文件到dist的路径问题
解决路径指向错误的问题
你的问题出在对__dirname的路径解析上——__dirname指向的是当前执行脚本(也就是src/index.js)所在的目录,也就是src/文件夹。你当前的代码里,虽然写了/dist,但实际上会被解析为相对于src/的路径(Windows系统下绝对路径的写法差异也可能导致这个问题),最终文件生成到了src/dist下面。
要生成到和src同级的dist/JSON目录里,你需要先回到项目的根目录(也就是main/文件夹),再指向dist目录,这里有两种可靠的写法:
方案一:使用path.resolve结合上级目录标识
const file = path.resolve(__dirname, `../dist/JSON/${filename}.json`); await fs.outputJson(file, {name: "name"});
这里的../会让路径从src/回退到它的上级目录(项目根目录),然后再进入dist/JSON文件夹,这样就能生成到你期望的位置。
方案二:使用path.join(更适配多系统)
const file = path.join(__dirname, '../dist/JSON', `${filename}.json`); await fs.outputJson(file, {name: "name"});
path.join会自动处理不同操作系统的路径分隔符(比如Windows的\和Linux的/),相对来说更稳妥,也更符合Node.js路径处理的最佳实践。
如果你不确定路径是否正确,可以先打印一下file变量的值验证:
console.log(file);
确认输出的路径是项目根目录下的dist/JSON/xxx.json,而不是src子目录下的路径。
内容的提问来源于stack exchange,提问作者Taylor Austin
相关产品推荐
相关产品推荐

