2016-07-18 4 views
0

Grundsätzlich habe ich eine Bootstrap-Navbar mit einem Login-Button, der Steam-API verwendet. Ich bin mitMeteor; Wie mache ich das funktioniert, Iron Route + Vorlagen Ausgabe

C:\Users\Farhan\AppData\Local\.meteor\packages\meteor-tool\1.3.4_4\mt-os.windows.x86_32\dev_bundle\server-lib\node_modules\fibers\future.js:280 
         throw(ex); 
          ^ReferenceError: Template is not defined 
    at meteorInstall.lib.main.js (lib/main.js:1:1) 
    at fileEvaluate (packages/modules-runtime/.npm/package/node_modules/install/install.js:153:1) 
    at require (packages/modules-runtime/.npm/package/node_modules/install/install.js:82:1) 
    at C:\Users\Farhan\csgofiyav1\.meteor\local\build\programs\server\app\app.js:68:1 
    at C:\Users\Farhan\csgofiyav1\.meteor\local\build\programs\server\boot.js:297:10 
    at Array.forEach (native) 
    at Function._.each._.forEach (C:\Users\Farhan\AppData\Local\.meteor\packages\meteor-tool\1.3.4_4\mt-os.windows.x86_32\dev_bundle\server-lib\node_modules\underscore\underscore.js:79:11) 
    at C:\Users\Farhan\csgofiyav1\.meteor\local\build\programs\server\boot.js:133:5 Exited with code: 8 Your application is crashing. Waiting for file change. 

als mein Fehler zurückgegeben. Meine Codes sind:

in layoutDefault.html

<template name="layoutDefault"> 
    .. 
         <a class="steamLogin" href="#">Login With Steam</a> 
        </li> 
       </ul> 
      </div> 
      <!-- /.navbar-collapse --> 
     </div> 
     <!-- /.container --> 
    </nav> 
    {{> yield}} 
    </template> 

und in main.js

Template.layoutDefault.events({ 
    'click .steamLogin': function(event){ 
     Meteor.loginWithSteam(); 
    } 
}); 

routes.js

Router.configure({ 
    layoutTemplate: 'layoutDefault' 
}); 

Router.route('/', { 
    template: 'main' 
}); 

Router.route('/contact', { 
    template: 'contact' 
}); 

jede Hilfe dankbar!

+0

Wenn sich die main.js unter/imports befindet, müssen Sie sie importieren (es wird nicht lazy-loaded) ... Das könnte der Grund sein, warum das Template nicht definiert ist. Hinzufügen: importieren {Vorlage} von 'meteor/templating' – Felix

+0

danke dafür, aktualisierte Frage – Farhan

Antwort

0

Fehler nicht mehr existiert, aber, sagt jetzt

Unable to resolve some modules: 

    "./layoutDefault.html" in /C/Users/Farhan/csgofiyav1/client/main.js 
(web.browser) 

shfited main.js zu Client-Ordner

Client/main.js

import { Template } from 'meteor/templating'; 

import './templates/layout/layoutDefault.html'; 

Template.layoutDefault.events({ 
    'click .steamLogin': function(event){ 
     Meteor.loginWithSteam(); 
    } 
}); 

Client/templates/layout/layoutDefault.html

<template name="layoutDefault"> 
    <nav class="navbar navbar-inverse navbar-fixed-top" role="navigation"> 
     ..... 
        <li> 
         <a class="steamLogin" href="#">Login With Steam</a> 
        </li> 
       </ul> 
      </div> 
      <!-- /.navbar-collapse --> 
     </div> 
     <!-- /.container --> 
    </nav> 

    {{> yield}} 
    </template> 
+0

Sie müssen HTML-Dateien nicht importieren. – Felix

0

Okay, es funktioniert jetzt. Ich hatte Server-Seite zu aktualisieren main.js

hat dieses Bild

if(Meteor.isServer) { 
    Meteor.startup(function() { 
    ServiceConfiguration.configurations.upsert(
     { service: 'steam' }, 
     { 
     $set: { 
      loginStyle: 'redirect', 
      timeout: 10000 // 10 seconds 
     } 
     } 
    ); 
    }); 
} 

Dann stattdessen ein Ereignis für die Vorlage zu haben, geroutet ich den Link zu einem login.html wo in der Client-Seite js, einmal, Vorlage wird gerendert, würde ich Meteor.loginWithSteam() ausführen;