Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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 ejs<;%-身体%>;主体未定义_Javascript_Node.js_Express_Ejs - Fatal编程技术网

Javascript ejs<;%-身体%>;主体未定义

Javascript ejs<;%-身体%>;主体未定义,javascript,node.js,express,ejs,Javascript,Node.js,Express,Ejs,我有一个要连接到主模板的主体。但不幸的是不起作用,返回未定义的。我已经尝试了include(),includefile.ejs,直接使用路径。然而,这仍然不起作用,所以我不知道该怎么办。这是我的密码: >mvc/views/template.ejs >mvc/views/home.ejs >结果 参考错误:C:\laragon\www\galeri-Uquiulamasi\mvc\views\template.ejs:18 16| 17| >> 18|

我有一个要连接到主模板的主体。但不幸的是
不起作用,返回
未定义的
。我已经尝试了
include()
,include
file.ejs
,直接使用路径。然而,这仍然不起作用,所以我不知道该怎么办。这是我的密码:




>mvc/views/template.ejs

>mvc/views/home.ejs

>结果
参考错误:C:\laragon\www\galeri-Uquiulamasi\mvc\views\template.ejs:18
16| 
17|     
>> 18|         
19|     
20| 
21| 
主体未定义
评估时(C:\laragon\www\galeri-Uquiulamasi\mvc\views\template.ejs:10:16)
在模板上(C:\laragon\www\galeri-Uquiulamasi\node\u modules\ejs\lib\ejs.js:691:17)
在tryHandleCache(C:\laragon\www\galeri-uigulamasi\node\u modules\ejs\lib\ejs.js:272:36)
在View.exports.renderFile[作为引擎](C:\laragon\www\galeri-Uquiulamasi\node\u-modules\ejs\lib\ejs.js:489:10)
在View.render(C:\laragon\www\galeri-uikulamasi\node\u-modules\express\lib\View.js:135:8)
在tryRender(C:\laragon\www\galeri-Uquiulamasi\node\u modules\express\lib\application.js:640:10)
在Function.render(C:\laragon\www\galeri-uikulamasi\node\u-modules\express\lib\application.js:592:3)
在ServerResponse.render(C:\laragon\www\galeri-uigulamasi\node\u modules\express\lib\response.js:1012:7)
在ServerResponse.res.render(C:\laragon\www\galeri-uigulamasi\node\u modules\express-ejs-layouts\lib\express-layouts.js:77:18)
在module.exports.index(C:\laragon\www\galeri-Uquiulamasi\mvc\controller\controller.js:5:9)

有人知道出了什么问题吗?任何帮助都将不胜感激。提前谢谢

您没有将
正文
参数传递到模板中

res.render("template", { body: "Some text" })
我找到了解决办法

  • 首先,我更改了文件名。template.ejs到layout.ejs
  • 我已将controller.js中的
    res.render(“模板”)
    更改为
    res.render(“布局”)
    。因此,实际布局被写在屏幕上
  • 我想在layout.ejs中写入home.ejs。因此,我将
    更改为

  • 我为您提供了更好的解决方案。 试试这个:

  • 首先将“template.ejs”文件名更改为“layout.ejs”。因为express ejs layouts将在您的视图文件夹中查找layout.ejs

  • 在home.ejs中,在代码顶部添加

  • 现在,您可以使用youre home.ejs的布局渲染它


  • 我希望我可以帮助您需要
    res.render('home')
    ,而不是
    res.render('template')
    ,它不起作用,但我尝试了这个方法并成功了:res.render('layout'),因为模块需要我提供一个名为'layout'的文件。实际上,body是另一个模板,所以是html内容。我不想发送参数,只需将文件写入主模板('layout')@VolkanCoskun您的问题中不清楚body是您希望在布局中呈现的模板,因此假设您希望从web服务器传递某些内容。但这意味着您现在只有一个页面可以显示。布局的思想是,它应用于您想要的任何内容模板。请使用原始的
    但重命名的文件再次尝试
    res.render('home')
    。我已经向您展示了我有两个文件,您可能看不到它们('layout.ejs'和'home.ejs')。我想写一个名为“layout”的文件。我试过你的解决方案,但没有成功。也许我还不清楚。布局模板的要点是,每当您加载另一个模板(例如,
    home
    )时,
    express ejs layouts
    库会将其计算为HTML,然后实际呈现
    layout
    ,并将
    home
    呈现的结果传递到
    body
    参数中。直接渲染布局通常没有意义,因为这是库的工作!因此,您通常会编写
    res.render('home')
    ,并在其中自动渲染
    layout
    ,其中包含
    home
    的结果。查看“感谢您的解决方案”。有些人不懂如何回答问题。并对问题给出否定的观点。当做
    > mvc/controller/controller.js
    
    var express = require('express');
    var router = express.Router();
    
    module.exports.index = function(req, res) {
        res.render("template");
    }
    router.get("/", module.exports.index);
    
    module.exports = router;
    
    > mvc/views/template.ejs
    
    <body>
        <div class="container-fluid px-0 h-100">
            <%-body%>
        </div>
    </body>
    
    > mvc/views/home.ejs
    
    <nav class="h-100 d-flex justify-content-center align-items-center text-center">
        <div class="line w-100">
            <span class="d-block"></span>
            <span class="d-block"></span>
        </div>
    </nav>
    
    > result
    
    ReferenceError: C:\laragon\www\galeri-uygulamasi\mvc\views\template.ejs:18
        16| <body>
    
        17|     <div class="container-fluid px-0 h-100">
    
     >> 18|         <%-body%>
    
        19|     </div>
    
        20| </body>
    
        21| 
    
    
    body is not defined
        at eval (C:\laragon\www\galeri-uygulamasi\mvc\views\template.ejs:10:16)
        at template (C:\laragon\www\galeri-uygulamasi\node_modules\ejs\lib\ejs.js:691:17)
        at tryHandleCache (C:\laragon\www\galeri-uygulamasi\node_modules\ejs\lib\ejs.js:272:36)
        at View.exports.renderFile [as engine] (C:\laragon\www\galeri-uygulamasi\node_modules\ejs\lib\ejs.js:489:10)
        at View.render (C:\laragon\www\galeri-uygulamasi\node_modules\express\lib\view.js:135:8)
        at tryRender (C:\laragon\www\galeri-uygulamasi\node_modules\express\lib\application.js:640:10)
        at Function.render (C:\laragon\www\galeri-uygulamasi\node_modules\express\lib\application.js:592:3)
        at ServerResponse.render (C:\laragon\www\galeri-uygulamasi\node_modules\express\lib\response.js:1012:7)
        at ServerResponse.res.render (C:\laragon\www\galeri-uygulamasi\node_modules\express-ejs-layouts\lib\express-layouts.js:77:18)
        at module.exports.index (C:\laragon\www\galeri-uygulamasi\mvc\controller\controller.js:5:9)
    
    res.render("template", { body: "Some text" })
    
    // >mvc/controller/controller.js
    module.exports.index = function(req, res) {
        res.render("home"); 
    }