【问题标题】:Node.js EJS template: how can I remove the port number from the href?Node.js EJS 模板:如何从 href 中删除端口号?
【发布时间】:2017-02-19 07:40:22
【问题描述】:

我有以下代码。我想打印出该目录中的文件名并附加一个 href 标记。下面的代码有效,但只有我的 node.js 应用程序正在侦听的端口号仍然存在。我怎么能删除它(所以我的hrefs实际上会起作用?)。与文档对象有关,例如截断 URL?

<h1><%= title %></h1>
<p>Welcome to
    <%=t itle %>
</p>
<ul>
    <% for(var i=0; i<fs.readdirSync( './Week4/').length; i++) {%>
        <li>
            <a href="<%= fs.readdirSync('./Week4/')[i] %>">
                <%=f s.readdirSync( './Week4/')[i] %>
            </a>
        </li>
        <% } %>
</ul>

【问题讨论】:

  • 对不起,我不明白你的问题。请您提供当前输出的示例和预期输出的示例吗?
  • 当前输出显示如果我单击列表项之一:domain:8080/week4/listitem。我想删除:'8080',因为这就是文件未加载的原因。

标签: javascript node.js ejs


【解决方案1】:

从阅读您的 cmets 来看,您的问题似乎不是您认为的问题。 您看到的:8080 是自动写入的,因为您指定了一个相对于当前 URL 的 href:

如果当前 URL 是 localhost:8080/Week4/index.html,则转到相对 URL itemlist 实际上会将您重定向到 localhost:8080/Week4/itemlist

如果这不是您想要的工作方式,您必须指定一个绝对 URL。例如,使用//localhost:80/Week4/itemlist 会将您重定向到另一个服务器(或同一服务器上的另一个侦听器)。


我不完全知道您要达到什么目标,但对我来说,您所期望的行为听起来并不好。除非您正在做一些非常具体的事情,否则链接不应重定向到同一服务器上的不同端口。

如果您能告诉我们您真正想要达到的目标,我们可以为您提供更好的帮助。

【讨论】:

  • 我想为每个列表项添加href,这样我就可以直接转到我单击的特定文件。
  • 抱歉,这不够精确。你有提供这些文件的路线吗?你为什么希望在没有端口的情况下看到它们?
  • 奇怪的是,如果我导航到端口 8080 上的文件(我的 express JS 正在使用)我得到一个 404: Error: Not Found at /var/www/richarddemeny/myapp/app.js :30:13 在 Layer.handle [as handle_request] (/var/www/richarddemeny/myapp/node_modules/express/lib/router/layer.js:95:5) at trim_prefix (/var/www/richarddemeny/myapp/ node_modules/express/lib/router/index.js:312:13) - 还有几行类似的错误消息。如果我在没有端口的情况下导航到它,则该文件可以毫无问题地提供。
猜你喜欢
  • 2018-01-31
  • 2016-02-06
  • 2012-03-20
  • 2014-12-18
  • 1970-01-01
  • 2014-07-18
  • 2011-07-04
相关资源
最近更新 更多