无法获取/blah.html-.ejs无法加载html?

时间:2018-08-14 15:09:51

标签: javascript node.js express ejs

我正在使用Nodejs和Express创建一个动态网页。

我有一个home.ejs文件,其中包含以下iframe:

<iframe id="newstable" src="/news_tables/2018-08-04.html" height="1000" width="100%"></iframe>

我的文件夹目录是:

News_Aggregator (includes app.js)
News_Aggregator/news_tables (includes a bunch of html files, e.g. `2018-08-04.html`)
News_Aggregator/views (includes my `home.ejs` file)

还有我的app.js

const express = require('express');
const app = express();
app.set("view engine", "ejs");

app.get('/', function(req, res){
  res.render('home.ejs');
});

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

但是,当渲染home.ejs时,我的iframe不会加载html页面:

enter image description here

这适用于“普通” HTML。我缺少什么来获取.ejs文件来查找并正确渲染?

2 个答案:

答案 0 :(得分:1)

.ejs文件生成HTML的事实是不相关的。

您的HTML表示浏览器应向服务器询问URL /news_tables/2018-08-04.html

您的HTTP服务器有一条路由app.get('/',,并且没有其他路由

您的HTTP服务器不知道URL /news_tables/2018-08-04.html,因此它返回一个404 Not Found

您需要编写代码,以提供所需的所有URL。

如果要提供静态文件,则可能应该看一下Express static()中间件。

答案 1 :(得分:1)

由于服务器不知道从何处获取文件,您会收到错误消息。 首先,您必须定义静态.ejs文件的位置。让我们说这样的话。如果您的文件位于公共文件夹(ejs,css等)中,则可以从那里获取它们。都设置为:

app.use(express.static(__dirname + '/public'))
app.set('views', path.join(__dirname, '/public'));

如果您有home.ejs文件,则可以从这里进行回复

  res.render('home', {});

您应该查看here中的Express static()并了解如何提供文件