Jos*_*eph 2 javascript node.js node-static
我不知道这是一个限制,node-static还是我的代码中的错误,但我似乎无法提供它来提供当前目录之上或之外的文件.我目前的目录结构是这样的:
project
public
...public stuff here...
system
core
server.js
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)
但是,如果我更改结构以使公共文件夹位于旁边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);
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
请注意,使用相对路径将解析相对于node.js进程的当前工作目录的那些路径,即您运行时所在的目录node server.js.所以编码后,只要你在core启动节点时在目录中,你就可以看起来很好.您确定始终从core目录中启动节点吗?
如果你想独立于cwd(更强大的恕我直言),使用__dirname获取当前文件的绝对目录路径,然后在你的相对路径上进行操作:__dirname + '/../../public'.
除此之外,请考虑fs.realpath来解决这些问题.我不能说node-static是否具有特殊的代码来防止这种情况,但是我见过的大多数其他模块如connect的静态中间件将很乐意为任何目录提供服务而没有特殊限制.
| 归档时间: |
|
| 查看次数: |
1611 次 |
| 最近记录: |