sails js模板jst.js错误找不到变量_

时间:2016-03-17 11:12:38

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

我是编程和学习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)
);

到目前为止一切顺利。我的应用程序适用于所有视图等,但到达此点时会出现错误。错误告诉我它找不到第一个__t(第4行)位于/jst.js中的变量'_':

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: _

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

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

也许下面没有正确导入或引用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中添加字符串参数。 E.g:

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