繁体   English   中英

对node.js使用非绝对路径并表达

[英]Use non-absolute Paths with node.js and express

我在本地主机上运行节点服务器时遇到问题。 现在,它只允许我使用静态路径运行它:

  app.get("/", function(req, res){ res.sendFile("/Users/name/Documents/_privat/dungeon/index.html"); }); 

当然那不是我想去的地方。

我尝试了多种嵌入动态路径的方法,这是我的文件结构:

 *dungeonapp - main.html - js --client ---main.js (and others) --server ---server.js - style --style.css 

因此,如果我以静态方式运行所有程序,则我的应用程序可以在localhost上运行,但是它也不会加载我的CSS文件和js文件。

我要去哪里错了? 所有常规路径嵌入都无法正常工作,例如“ /../index.html”

快速响应sendFile()方法具有第二个options参数,您可以在其中表达根路径以进行路径解析。 请参阅文档以获取更多信息。 您可以使用{root: __dirname}作为sendFile()第二个参数,文件路径将相对于调用sendFile()的javascript文件进行解析。 就您而言,问题中指出的目录结构是server.js上的代码为:

app.get("/", function(req, res){
    res.sendFile("../../main.html", {root: __dirname});
});   

这样,您可以将项目移动到任何文件夹,并且sendFile()将继续工作。 我认为您应该重新表达您的问题,因为您是在谈论绝对路径而不是静态路径。

通常,您会在项目的根目录中执行两个子文件夹,一个用于服务器代码,另一个用于客户端(即Web)代码,然后可以在以下目录中使用app.use(express.static('<filepath>'))您的服务器代码以提供静态客户端文件。

例如,在我的项目根目录中,我有2个文件夹,一个名为app,一个名为web。 在主app.js中,我有app.use(express.static(__dirname + '/../web/')); 提供静态内容。 通常,这将是app.use()的首次使用,因此在提供您的内容之前,无需检查其他路由。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM