在没有IP地址的Express中提供静态文件

时间:2016-03-28 21:06:54

标签: javascript css node.js express

例如,我的模板文件中包含以下代码:

<link href="http://localhost:3000/css/bootstrap.min.css" rel="stylesheet">

这会强制我在启动网站时将IP地址从http://localhost:3000更改为Web服务器IP地址。可以想象,整个站点有很多模板文件。我编写的脚本可以搜索和替换项目模板文件中的IP实例,如果可以的话,我想避免这样做。

我想保留以下格式:

<link href="css/bootstrap.min.css" rel="stylesheet">

请注意,它与原点无关。我希望Express能够使用服务器的当前位置来提供文件。

我目前在server.js文件中使用此代码:

app.use(express.static(path.join(__dirname ,'/v1/public/')));

如果我在模板文件中指定主机,那么效果很好。我还没有在网上发现任何我想做的事情。

2 个答案:

答案 0 :(得分:1)

如果标题是模板文件,为什么不将完整的url作为变量传递给模板?您可以通过以下方式构建应用级别的网址:

var baseUrl = req.protocol + '://' + req.get('host');

并将baseUrl传递给标题模板,并在运行时为路径添加前缀。

答案 1 :(得分:0)

尝试:

href="http://localhost:3000/v1/public/css/bootstrap.min.css" rel="stylesheet"

或亲戚:

href="./v1/public/css/bootstrap.min.css" rel="stylesheet"

您的静态文件夹是提供静态资源的文件夹路径。