0

在使用Sails时,我收到此错误Uncaught ReferenceError: JST is not defined on the chrome console 每次这行代码:

JST['SailsApp/assets/templates/addUser.ejs']( obj )

addUser.ejs文件的内容是:

<tr data-id="<%= user.id %>" data-model="user">
  <% if (user.online) { %>
  <td><span class="fa fa-circle fa-lg fa-circle-green"></span></td>
  <% } else { %>
  <td><span class="fa fa-circle fa-lg fa-circle-red"></span></td>
  <% } %>

  <td><%= user.id %></td>
  <td><%= user.name %></td>
  <td><%= user.title %></td>
  <td><%= user.email %></td>

  <% if (user.admin) { %>
  <td> <span class="glyphicon glyphicon-king" > </span></td>
  <% } else { %>
  <td> <span class="glyphicon glyphicon-user" > </span></td>
  <% } %>

  <td><a href="/user/show/<%= user.id %>" class="btn btn-sm btn-primary">Show</a> </td>
  <td><a href="/user/edit/<%= user.id %>" class="btn btn-sm btn-warning">Edit</a> </td>
  <td>
    <form action="/user/destroy/<%= user.id %>" method="POST">
      <input type="hidden" name="_method" value="delete"/>
      <input type="submit" class="btn btn-sm btn-danger" value="Delete"/>
      <input type="hidden" name="_csrf" value="<%= _csrf%>" />
    </form>
  </td>
</tr>

编译后的 .jst 文件未出现在.tmp/public 文件夹中,如果我sudo grunt jst手动运行,则会创建它,但 chrome 控制台继续给出相同的错误。

任何帮助将非常感激。

提前致谢!

4

1 回答 1

0

我最近遇到了同样的问题。在“tasks/register/compileAssets.js”下,尝试移动jst:dev到下方copy:dev

module.exports = function (grunt) {
  grunt.registerTask('compileAssets', [
    'clean:dev',
    'less:dev',
    'copy:dev',
    'jst:dev',
    'coffee:dev'
  ]);
};

似乎 jst:dev 任务正在 .tmp/ 目录中查找模板文件,但在执行复制任务之前,它们不会从 assets/ 中移动。如果您运行grunt并收到如下错误,您会看到:

Running "jst:dev" (jst) task
>> Destination not written because compiled files were empty.
于 2016-01-02T15:08:55.723 回答