首页 > 解决方案 > 节点将相对路径转换为绝对路径,不需要

问题描述

我有以下问题,在函数 sendDownload(downlodable ,objPathArray, responseObject) 我收到参数 objPathArray 是这样的:

[{"pathToFile":"./REPORTS/portfolio/onDemand/Portfolio_report_HP_17.08.2021.xlsx","file":"Portfolio_report_HP_17.08.2021.xlsx"}]

功能:

function sendDownload(downlodable ,objPathArray, responseObject) {    
    if (downlodable) {  
        responseObject.download((objPathArray[0].pathToFile), (objPathArray[0].file))      
        console.log('HERE ' + JSON.stringify(objPathArray))        
    }
}

但是当我在我的应用程序中调用该函数时,我收到此错误Error: ENOENT: no such file or directory, stat 'C:\Work\reporting-server\REPORTS\portfolio\onDemand\Portfolio_report_HP_17.08.2021.xlsx',这是因为 Node 正在以绝对路径更改文件的相对路径。为了解决这个问题,对我来说最好的选择是什么?

谢谢~

标签: javascriptnode.jsexpress

解决方案


Node.js必须解析路径才能找到文件。

如果你给它一个相对路径,那么它必须从某个地方开始,那个地方就是当前工作目录。

如果您希望它从其他地方读取文件,请自己将其解析为绝对路径。

一般来说,执行此操作的工具会path.resolve告诉它从哪里开始,例如配置文件环境变量模块所在的目录


推荐阅读