javascript 为什么我的ejs文件没有被呈现后,我把我的静态文件在公共文件夹,并添加代码app.use(expression.static(“public”));

up9lanfz  于 2023-02-28  发布在  Java
关注(0)|答案(1)|浏览(110)

一切正常,list.ejs也被正确呈现,直到我移动了public文件夹中的index.html和css文件,并添加了app.use(express.static(“public))位于app.js中。

const express = require("express");

const https = require("https");

const app = express();

app.set("view engine", "ejs");

app.use(express.static("public"));

app.get("/", function(req, res){
  
const today = new Date();
  
const options = {
    
week: 'long',
    
year:'numeric',
    
month:'long',
    
day:'numeric'
  
}
  
let day = today.toLocaleDateString("en-US", options);
  
res.render("list.ejs",{kindOfDay:day} );

});

app.listen(3000, function(){

  console.log("Server is up and running on Port 3000.");

});

我的文件结构:
主文件夹||_***公开||***索引. html||****次浏览量|****列表.ejs

roejwanj

roejwanj1#

    • Express. static完成它已响应的请求。**

app.use(express.static("public"));通过使用GET发送请求的文件(如果在公用文件夹中找到这些文件)来完成请求。因此,如果找到并返回了文件,静态服务器将不会调用其next函数参数。注意:如果URL中未提供文件名,则默认情况下express.static()将查找index.html
换句话说,如果文件由'express. static()'提供,则应用程序中的下一行

app.get("/", function(req, res){

从未调用,并且

`   res.render("list.ejs",{kindOfDay:day}

语句从未执行。
解决办法是

  • 不要将.ejs文件放在公共目录中-它们不应该被直接提供。
  • 通常,将ejs处理限制为使用.ejs扩展名请求的文件。
  • 如果总是希望通过呈现主页来提供主页(请求时没有文件路径),请放置主页提供代码:
app.get("/", function(req, res){ /* ... handle request */ };

在代码设置静态服务器之前。这是为了防止"index.html"文件出现在公共文件夹的根目录中。

相关问题