【问题标题】:sails js template jst.js error can't find variable _Sails js模板jst.js错误找不到变量_
【发布时间】:2016-03-17 11:12:38
【问题描述】:

我是编程和学习 JavaScript 和 Sails JS 的新手。到目前为止我确实很喜欢它,但遇到了一个我不明白的问题。如果我使用了错误的术语,请原谅我,我没有编程背景。

我在 Sails v0.12.1(全新安装)和 OSX(如果这很重要)上运行

在 /assets/templates 中,我创建了一个名为“testTemplate.ejs”的模板文件。其中仅包含带有简单文本的 h3 标签:

<h3>This is the template</h3>

在我的 /assets/js/app.js 中,我有一个简单的 jQuery“调用”来在我的客户端页面中插入模板:

$('tr:last').after(
    JST['assets/templates/testTemplate.ejs'](obj)
);

到目前为止一切顺利。我的应用程序在所有视图等上都可以正常工作,但在达到这一点时会引发错误。错误告诉我它找不到位于 /jst.js 中第一个 __t 的变量“_”(第 4 行):

this["JST"] = this["JST"] || {};
this["JST"]["assets/templates/addUser.ejs"] = function(obj) {
    obj || (obj = {});
    var __t, __p = '', __e = _.escape;
    with (obj) {
        __p += '<h3>Dit is de template</h3>';
    }
    return __p
};

我尝试使用以下命令安装 underscore.js:

npm install underscore --save

但这并没有什么不同。我还尝试使用 html 而不是 ejs 作为模板(也更改了管道)。

我不知道为什么会出现此错误:

ReferenceError: Can't find variable: _

或者我应该/可以如何解决它。

谁能帮帮我?

【问题讨论】:

    标签: javascript node.js templates underscore.js sails.js


    【解决方案1】:

    感谢@Armfoot,我找到了解决方案。

    通过 npm 安装 underscore.js 没有按预期工作。但是当我手动下载 underscore.js 文件并将其放在 /assets/js/ 目录中时,电梯帆错误消失并且模板加载正确。

    必须是我所缺少的知识才能在两天内寻找答案,这很容易解决。再次感谢 Armfoot 为我指明了正确的方向。

    【讨论】:

      【解决方案2】:

      可能 underscore.js 之前没有正确导入或引用,尝试在加载的代码中找到类似于此行的内容:

      <script src="YOURPATH/underscore.js"></script>
      

      或者在使用下划线之前尝试添加:

      $.getScript("https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js", function( data, textStatus, jqxhr ) {
        console.log( data ); // Data returned
        console.log( textStatus ); // Success
        console.log( jqxhr.status ); // 200
        console.log( "Load was performed." );
      });
      

      并且根据他们的文档,您需要在escape function 中添加一个字符串参数。例如:

      _.escape('Curly, Larry & Moe');
      => "Curly, Larry &amp; Moe"
      

      【讨论】:

      • 感谢您的回答。有没有办法查看 underscore.js 是否正常运行?
      • @PatrickKaim 我刚刚编辑了我的答案,请尝试在您的 var __t, __p = '', __e = _.escape; 之前添加该脚本。
      • 感谢您的建议。您对 underscore.js 无法正确加载的评论是正确的。我找到了解决方案。显然 npm install 没有工作。它安装得很好,但它可能没有被正确引用。但是,当我下载 underscore.js 并将其放在 /assets/js/ 中时,引用已生成,因此不再出现错误。
      猜你喜欢
      • 2016-12-04
      • 1970-01-01
      • 2018-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-20
      相关资源
      最近更新 更多