【问题标题】:How to use yield and Iron-router?如何使用yield和Iron-router?
【发布时间】:2015-09-24 00:46:32
【问题描述】:

所以我现在正在尝试做一个基本的流星应用程序。这是三个文件。

router.js:

Router.configure({
    layoutTemplate : 'layout',
    loadingTemplate : 'loading',
    notFoundTemplate : 'notFound'
});

Router.route("/", {
    name : "homeIndex",
    data : function() {
        return {
            message : "Welcome to the Rocket Shop"
        }
    }
});

index.html:

<template name="homeIndex">
    <h1>{{message}}</h1>
</template>

layout.html:

<template name="layout">
        {{> nav}}
        <div class="container">
            {{>yield}}
        </div><!-- /.container -->
</template>

当我在启动应用程序后转到 localhost:3000 时,我的浏览器控制台中出现了很长的堆栈跟踪,并且页面正文没有加载。

22:35:57.444 Exception in callback of async function: MiddlewareStack.prototype.concat@http://localhost:3000/packages/iron_middleware-stack.js?ff70621b6c5f6a406edc60600c4b76126dae21d6:303:7
RouteController.prototype._runRoute@http://localhost:3000/packages/iron_router.js?dd5fa02859b6335661b94134bd9903be8eecf44d:542:11
Route.prototype.dispatch@http://localhost:3000/packages/iron_router.js?dd5fa02859b6335661b94134bd9903be8eecf44d:856:10
Route/route@http://localhost:3000/packages/iron_router.js?dd5fa02859b6335661b94134bd9903be8eecf44d:713:5
boundNext@http://localhost:3000/packages/iron_middleware-stack.js?ff70621b6c5f6a406edc60600c4b76126dae21d6:425:16
Meteor.bindEnvironment/<@http://localhost:3000/packages/meteor.js?5deab0885176b44ccbbbf0b5101b065971c8f283:999:17
dispatch@http://localhost:3000/packages/iron_middleware-stack.js?ff70621b6c5f6a406edc60600c4b76126dae21d6:449:3
RouteController.prototype.dispatch/</<@http://localhost:3000/packages/iron_router.js?dd5fa02859b6335661b94134bd9903be8eecf44d:393:7
Tracker.Computation.prototype._compute@http://localhost:3000/packages/tracker.js?9309a5697855cef52b32921fbc9dcb1017c58b39:349:5
Tracker.Computation@http://localhost:3000/packages/tracker.js?9309a5697855cef52b32921fbc9dcb1017c58b39:237:5
Tracker.autorun@http://localhost:3000/packages/tracker.js?9309a5697855cef52b32921fbc9dcb1017c58b39:588:11
RouteController.prototype.dispatch/<@http://localhost:3000/packages/iron_router.js?dd5fa02859b6335661b94134bd9903be8eecf44d:391:5
Tracker.nonreactive@http://localhost:3000/packages/tracker.js?9309a5697855cef52b32921fbc9dcb1017c58b39:615:12
RouteController.prototype.dispatch@http://localhost:3000/packages/iron_router.js?dd5fa02859b6335661b94134bd9903be8eecf44d:390:3
Router.prototype.dispatch@http://localhost:3000/packages/iron_router.js?dd5fa02859b6335661b94134bd9903be8eecf44d:1700:3
onLocationChange@http://localhost:3000/packages/iron_router.js?dd5fa02859b6335661b94134bd9903be8eecf44d:1784:20
Tracker.Computation.prototype._compute@http://localhost:3000/packages/tracker.js?9309a5697855cef52b32921fbc9dcb1017c58b39:349:5
Tracker.Computation@http://localhost:3000/packages/tracker.js?9309a5697855cef52b32921fbc9dcb1017c58b39:237:5
Tracker.autorun@http://localhost:3000/packages/tracker.js?9309a5697855cef52b32921fbc9dcb1017c58b39:588:11
Router.prototype.start@http://localhost:3000/packages/iron_router.js?dd5fa02859b6335661b94134bd9903be8eecf44d:1777:31
Router/</<@http://localhost:3000/packages/iron_router.js?dd5fa02859b6335661b94134bd9903be8eecf44d:980:9
.withValue@http://localhost:3000/packages/meteor.js?5deab0885176b44ccbbbf0b5101b065971c8f283:971:17
withoutInvocation/<@http://localhost:3000/packages/meteor.js?5deab0885176b44ccbbbf0b5101b065971c8f283:428:26
Meteor.bindEnvironment/<@http://localhost:3000/packages/meteor.js?5deab0885176b44ccbbbf0b5101b065971c8f283:999:17
onGlobalMessage@http://localhost:3000/packages/meteor.js?5deab0885176b44ccbbbf0b5101b065971c8f283:365:11
1 meteor.js:880:11

有没有人知道我做错了什么?我只是按照复数教程,并遵循所有的方向。

【问题讨论】:

    标签: javascript meteor stack-trace iron-router


    【解决方案1】:

    在搜索其他 Iron-router 问题的 stackoverflow 后,我找到了自己问题的答案。我不知道它为什么会起作用,但它解决了这个问题。我所要做的就是运行:

    meteor add ejson
    

    我不再得到我的错误。

    这是回答我的问题的问题(在我的问题之后发布): Iron:router 1.0.9 Not working

    【讨论】:

      【解决方案2】:

      异常不是很相关,但我看到了两种可能性:

      • 您忘记了Route.route(); 中的template 属性
      • 您的路由器配置文件不在正确的文件夹中

      对于第一个:

      Router.route("/", {
          name : "homeIndex",
          template : "homeIndex",
          data : function() {
              return {
                  message : "Welcome to the Rocket Shop"
              }
          }
      });
      

      第二个:确保您的router.js 文件位于client/lib/ 文件夹中。

      另外,请确保 iron-router 文件包含在 .meteor/packages.js 文件中。

      【讨论】:

      • 我相信 router.js 应该只是在 /lib/ 中。另外,我添加了模板属性,但没有帮助。嗯..
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-17
      • 1970-01-01
      • 2015-03-06
      • 2016-02-27
      • 2016-10-31
      • 2014-08-30
      • 2015-05-12
      相关资源
      最近更新 更多