[英]node-static cannot serve a folder above current folder
我不知道这是对node-static
的限制还是我的代码中的错误,但是我似乎无法让它为当前目录之上或之外的文件提供服务。 我当前的目录结构是这样的:
project
public
...public stuff here...
system
core
server.js
server.js
位于core
目录中,将public
路径设置为../../public
但此代码无法运行。 它返回404。
staticServer = new (static.Server)('../../public');
webServer = http.createServer(function (request, response) {
staticServer.serve(request,response);
})
webServer.listen(appServerConfig.port, appServerConfig.address);
但是,如果我更改结构以使公用文件夹位于server.js
旁边,并相应地更改代码,它将起作用:
project
system
core
server.js
public
...public stuff here...
staticServer = new (static.Server)('./public');
webServer = http.createServer(function (request, response) {
staticServer.serve(request,response);
})
webServer.listen(appServerConfig.port, appServerConfig.address);
为什么会这样呢?
请注意,使用相对路径将解析相对于node.js进程的当前工作目录(即,您运行node server.js
时所在的目录)的那些路径。 因此,按照代码进行编码,只要您在启动节点时位于core
目录中,对我来说就可以了。 您确定总是从core
目录启动节点吗?
如果要独立于cwd(功能更强大的IMHO),请使用__dirname
获取当前文件的绝对目录路径,然后使用相对路径: __dirname + '/../../public'
。
除此之外,请考虑使用fs.realpath来解决这些问题。 我不能说特定于节点的静态代码是否具有防止这种情况的特殊代码,但是我见过的大多数其他模块(例如connect的静态中间件)都会很高兴地为任意目录提供服务而没有特殊限制。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.