我使用node.js express向客户端提供svg和json等静态文件,所以我使用sendFile()直接发送文件。
所以这是我的服务器文件结构,
/root // the root of the server
/maps // put some static files
/routes/api // put the web API
在网络API中
app.get('/buildings/map',function(req,res){
var mappath = 'maps/ARM-MAP_Base.svg';
res.sendfile(mappath);
})
它在我的本地服务器上完美地将文件发送到客户端,因此这意味着服务器可以找到该文件并发送它。但是当服务器部署到AWS时,此方法会遇到错误 - 242:错误:ENOENT,stat node.js,看起来无法在该路径中打开文件
我读了一些解决方案,例如将__dirname与mappath结合起来,它没有用,因为它会带到/ routes / api / maps /...的路径。
到目前为止,我不知道为什么它在我的本地计算机上运行但无法在AWS上运行
答案 0 :(得分:0)
fs
之类的相对mappath
路径将从current working directory解析,但不保证一致。它在本地工作,因为您正在使用/root
作为工作目录执行应用程序。
这就是为什么你要找到使用__dirname
的建议,用于解析相对于当前脚本的路径。
尽管如此,您还是希望../
使用resolve parent directories。
var mappath = 'maps/ARM-MAP_Base.svg';
res.sendfile(__dirname + '/../../../' + mappath);
这假定当前脚本位于,__dirname
为/root/maps/routes/api
,因为目录树中的缩进建议。