Coffeescript 除选项不在Router.onBeforeAction中工作外

Coffeescript 除选项不在Router.onBeforeAction中工作外,coffeescript,meteor,iron-router,Coffeescript,Meteor,Iron Router,我的routes.coffee文件中有以下代码,Router.onBeforeAction(…函数似乎忽略了except选项,并不断重定向到“登录”模板。这是为什么 enforceLogin = -> if Meteor.userId() is undefined or Meteor.userId() is null isLoggedIn = false Router.go '/sign-in' else isLoggedIn

我的
routes.coffee
文件中有以下代码,
Router.onBeforeAction(…
函数似乎忽略了
except
选项,并不断重定向到“登录”模板。这是为什么

enforceLogin = ->
    if Meteor.userId() is undefined or Meteor.userId() is null
        isLoggedIn = false
        Router.go '/sign-in'
    else
        isLoggedIn = true
    return isLoggedIn

isCharacterNamed = ->
    userCharacter = Characters.findOne ownedBy: Meteor.userId()
    userCharacter.name is not undefined

checkCharacterNamed = (context) ->
    if !isCharacterNamed()
        Router.go 'create-character'

userCharactersSubscription = -> Meteor.subscribe 'userCharacters'

nonGameRoutes = ['sign-in', 'sign-up', 'sign-out', 'blog']

Router.map ->
    @route 'home', path: '/'
    @route 'adventures'

    @route 'create-character', onBeforeAction: ->
        enforceLogin()
        if @ready()
            if isCharacterNamed() then Router.go 'home'

    @route 'blog'
    @route 'admin/blog'

    @route 'loading'

    @route 'sign-in'
    @route 'sign-up'
    @route 'sign-out'

Router.onBeforeAction('loading')
Router.onBeforeAction enforceLogin, { except: nonGameRoutes }

Router.waitOn(userCharactersSubscription)

Router.onAfterAction ->
    if @ready()
        checkCharacterNamed()
        @render()
    else
        @render('loading')
,
    { except: _.union(nonGameRoutes, ['create-character']) }

试试`Router.onBeforeAction enforceLogin,除了:nonGameRoutes

我明天会这样做,但这不是编译到同一个javascript吗?嗯……这看起来很奇怪,像这样将js语法与coffescript混合在一起。但你可能是对的,这不是问题的原因。你是否为onBeforeAction定义了“loadingTemplate”(“装载”)要正确启动?可能这会导致重新加载页面。请尝试在enforceLogin中放置一些console.log以确保它正在启动。是的,这是正常的,大括号和括号是可选的。我确实定义了加载模板,但代码中似乎缺少该模板,我将对此进行检查。enforceLogin有效,因为我暂时通过将它放在每个适当的路由中修复了该问题。我并不是说它不起作用。我只是想知道该功能是否真的是重定向的原因。例如,它可能只是Meteor重新加载由不存在的路由引起的页面。你在控制台日志中看到了什么吗?这里有类似的问题。我通过自己处理该问题而后退在
enforceLogin
函数中。似乎except对我也不起作用。也许这是一个bug。