Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法获取/blah.html-.ejs可以';不加载html?_Javascript_Node.js_Express_Ejs - Fatal编程技术网

Javascript 无法获取/blah.html-.ejs可以';不加载html?

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')

我正在使用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');
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。我正在查看e> 静态()现在,我将确定这一点,但快速提问:我尝试加载的框架可能是100个html页面中的任意一个。我是否需要专门为其中的每一个页面提供服务?或者只是设置它们所在的文件夹?如果在.ejs文件中包含100个iFrame,那么您应该将文件名列表传递给渲染文件,以供我使用例如:
res.render('template.ejs',{list:listOfFilePath})
并在.ejs文件中为每个
listOfFilePath
做一个foreach,并为每个做一个iframe。不是我有100个iframe要在ejs中显示,而是iframe可以是100个不同的iframe中的一个。用户可以单击一个列表,根据该
li
值,iframe加载该项目的html。我正在查看e> static()现在