我正在使用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
页面:
这适用于“普通” HTML。我缺少什么来获取.ejs
文件来查找并正确渲染?
答案 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()
并了解如何提供文件