Javascript 无法获取/blah.html-.ejs可以';不加载html?
我正在使用Nodejs和Express创建一个动态网页 我有一个Javascript 无法获取/blah.html-.ejs可以';不加载html?,javascript,node.js,express,ejs,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> 和我的app.js: const express = require('express')
home.ejs
文件,其中包含以下iframe:
<iframe id="newstable" src="/news_tables/2018-08-04.html" height="1000" width="100%"></iframe>
和我的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
文件找到并正确呈现,我缺少了什么?事实上,您的HTML是从.ejs
文件生成的,这与此无关
您的HTML表示浏览器应该向服务器请求URL/news\u tables/2018-08-04.HTML
您的HTTP服务器有一个路由app.get('/',
和没有其他路由
您的HTTP服务器不知道URL/news\u tables/2018-08-04.html
,因此它返回一个404 Not Found
您需要编写代码来提供所有您想要的URL
如果您想提供静态文件,您可能应该查看Express
static()
中间件。事实上,您的HTML是从.ejs
文件生成的,这与此无关
您的HTML表示浏览器应该向服务器请求URL/news\u tables/2018-08-04.HTML
您的HTTP服务器有一个路由app.get('/',
和没有其他路由
您的HTTP服务器不知道URL/news\u tables/2018-08-04.html
,因此它返回一个404 Not Found
您需要编写代码来提供所有您想要的URL
如果您想为静态文件提供服务,可能应该查看Express
static()
中间件。由于服务器不知道从何处获取文件,因此会出现错误。
首先,您必须定义静态.ejs文件的位置。可以这样说。如果您的文件位于公用文件夹(ejs、css等)中,您将从那里获取它们。使用以下两种方法进行设置:
app.use(express.static(__dirname + '/public'))
app.set('views', path.join(__dirname, '/public'));
如果您有home.ejs文件,您可以在这里直接输入您的响应
res.render('home', {});
您应该从中查看Express
static()
,了解如何为文件提供服务如果您收到错误,因为服务器不知道从何处获取文件。
首先,您必须定义静态.ejs文件的位置。可以这样说。如果您的文件位于公用文件夹(ejs、css等)中,您将从那里获取它们。使用以下两种方法进行设置:
app.use(express.static(__dirname + '/public'))
app.set('views', path.join(__dirname, '/public'));
如果您有home.ejs文件,您可以在这里直接输入您的响应
res.render('home', {});
你应该从中查看Express
static()
并学习如何为文件提供服务Aha,这很有意义。我正在研究静态方法,但不太了解它们是如何链接的。我保持了我的ejs
文件不变,但添加了app.use(Express.static('news\u tables'))
但它仍然表示无法获取。啊哈,这很有意义。我正在查看静态方法,但不太了解它们是如何链接的。我保持了我的ejs
文件不变,但添加了app.use(express.static('news\u tables'))
但它仍然表示无法获取。我会确定这一点,但快速提问:我尝试加载的框架可能是100个html页面中的任意一个。我是否需要专门为其中的每一个页面提供服务?还是只设置它们所在的文件夹?如果在.ejs文件中放置100个iFrame,则应该将文件名列表传递给渲染器将在.ejs文件中使用的文件。类似以下内容:res.render('template.ejs',{list:listOfFilePath})
并在.ejs文件中为每个listOfFilePath
做一个foreach,并为每个做一个iframe。不是我有100个iframe要在ejs中显示,而是iframe可以是100个不同的iframe中的一个。用户可以单击一个列表,根据该li
值,iframe加载该项目的html。我正在查看res.render('template.ejs',{list:listOfFilePath})
并在.ejs文件中为每个listOfFilePath
做一个foreach,并为每个做一个iframe。不是我有100个iframe要在ejs中显示,而是iframe可以是100个不同的iframe中的一个。用户可以单击一个列表,根据该li
值,iframe加载该项目的html。我正在查看