javascript - Node 静态无法为当前文件夹之上的文件夹提供服务

标签 javascript node.js node-static

我不知道这是否是 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);

但是,如果我更改结构以使公共(public)文件夹位于 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 时所在的目录。因此,按照编码,只要启动 Node 时位于 core 目录中,您看起来就可以。您确定始终从 core 目录启动 Node 吗?

如果您想独立于 cwd(更强大的恕我直言),请使用 __dirname 获取当前文件的绝对目录路径,然后附加到该文件的相对路径: __dirname + '/../../public'.

除此之外,请考虑 fs.realpath来解决这些问题。我不能说 node-static 是否有特殊的代码来防止这种情况,但我见过的大多数其他模块(例如 connect 的静态中间件)将很乐意为任何任意目录提供服务,而没有特殊限制。

关于javascript - Node 静态无法为当前文件夹之上的文件夹提供服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12127084/

相关文章:

javascript - 从本地存储刷新页面后数据丢失

Javascript:隐藏 Canvas 对象的笔划

php - 为什么即使找不到匹配项,switch 语句也会执行 case block ?

Node.js - 如何在 node.js 应用程序中获取我的外部 IP 地址?

javascript - 不应该是变量的 undefined variable 错误

node.js - connect-busboy 捕获无文件场景

javascript - 处理 JavaScript 中两层之间的错误

json - 使用 POST 数据从 Node.js 提供静态文件

node.js - Node 静态示例

Node.js 简单服务器请求结束事件问题