【问题标题】:node.js/express/ejs not rendering root page?node.js/express/ejs 不呈现根页面?
【发布时间】:2019-12-23 01:35:18
【问题描述】:

我使用 node.js、express 和 ejs 作为开发环境。我遇到了我的主页没有呈现的问题。但是,会呈现其他页面。当我访问http://127.0.0.1:9999 时,我绝对没有回报。但是,当我访问http://127.0.0.1:9999/about 时,我得到了正确的响应。我用一个非常简单的测试页面替换了我的正常页面,以检查它是否有问题。没有。没变。我只能得出结论,路径'/'(或'')没有看到请求。

任何人都可以看到问题吗?谢谢

app.js

const path = require("path");
const express = require("express");
const ejs = require("ejs");

const app = express();
const port = 9999;

const viewsPath = path.join(__dirname, "./views");
app.set("view engine", "ejs");
app.set("views", viewsPath);
app.use(express.static(path.join(__dirname, "/public")));

app.get("/", function(req, res) {
   console.log("index accessed");
   res.status(200).render("partials/test.ejs");
});

app.get("/about", function(req, res) {
   console.log("about accessed");
   res.status(200).render("partials/test.ejs");
});

app.listen(port, () => console.log(`Example app listening on port ${port}!`));

test.ejs

<h1>This is a test page</h1>

我添加了以下路由,路径不匹配。

app.get("*", function(req, res) {
   console.log("* accessed");
   res.status(200).render("partials/test.ejs");
});

【问题讨论】:

  • 在路由处理程序中添加一些控制台日志,然后:当您访问localhost:9999/ 时,您的控制台说您正在点击什么,您的浏览器开发工具“网络”选项卡说什么?
  • 我打赌你在/public 中有一个index.html 文件,并且app.use(express.static(path.join(__dirname, "/public"))); 路由(在app.get("/", function(req, res) { 路由之前定义)首先匹配它。
  • app.get("", function(req, res) { console.log(" 已访问"); res.status(200).render("partials/ test.ejs"); });
  • 昆汀,这就是问题所在!谢谢
  • @Quentin 是对的。就我而言,这就是问题所在。非常感谢!!!

标签: javascript node.js express ejs


【解决方案1】:

同时可以使用:

app.use(express.static(app_path, { 
    index: false
}));

Credits to

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多