【问题标题】:EJS.JS ReferenceError: title not definedEJS.JS ReferenceError:标题未定义
【发布时间】:2017-07-17 04:52:38
【问题描述】:

我遇到了 express 脚本的问题。我正在调用一个渲染视图的函数,另一个函数的成功。在这个项目中,我使用 angular、node、express 和 ejs 作为视图引擎。当我渲染视图时,很遗憾收到以下 ejs 错误:

ReferenceError: /Users/emilywfrancis/Desktop/nodejs-angularjs-sequelizejs/views/about.ejs:5

3| <html ng-app="app">

4| <meta charset="utf-8">

5| <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/3.1.0/css/font-awesome.min.css" />

6| <% include header %>

7| <% include navbar %> 

8| <body>
  title is not defined

代码如下:

exports.verifyusers= function(req, res) {
models.user.find({
where: {
  email: req.body.email,
  password: req.body.password
}
 }).then(function(res, user) {
    if(user == "user.name") { //if user exists in database
        res.render('/about')
    };
 });
};

【问题讨论】:

  • 似乎错误实际上在header 文件中。哪个正确有这样的东西:&lt;%= title %&gt;
  • 是的,有——但是,我不明白为什么这会引发错误。
  • 另外,错误给出了指向第 5 行的错误
  • 我假设模板被编译为 JavaScript,类似于:"&lt;title&gt;" + title + "&lt;/title&gt;"。使用:&lt;%= (typeof title != "undefined" ? title : "") %&gt;,它会正常工作,因为生成的 JavaScript 是:"&lt;title&gt;" + (typeof title != "undefined" ? title : "") + "&lt;/title&gt;"
  • 是的,这行得通——谢谢。

标签: javascript angularjs express ejs


【解决方案1】:

似乎错误实际上是在头文件中,其中包含以下内容:

<%= title %>

我认为将其更改为以下内容会起作用:

<%= (typeof title != "undefined" ? title : "") %>

【讨论】:

    【解决方案2】:

    如果尚未完成,您需要为您的标题指定一个值。 如果它完成了,那么@andlrc 的答案是正确的,但你仍然想弄清楚它为什么会抛出错误。如果不是,这是不好的做法。

    在你的服务器中定义一个变量名 title 并给它一个字符串。 然后暴露在你的视野中。

    In this answer you find an example.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-24
      • 2020-07-11
      • 1970-01-01
      • 2015-10-04
      • 2017-04-10
      • 1970-01-01
      相关资源
      最近更新 更多