2017-08-27 6 views
2

Meteorの新しいファイル構造に移行した後、1日中エラーが発生しました。鉄のルーターが故障しているようだ。Iron Router "layout"または "layout"という名前のテンプレートが見つかりませんでした

私はlayout.htmlとjsファイルを持っています。また、適切な小文字の名前。

フルエラー:

Couldn't find a template named "layout" or "layout". Are you sure you defined it?

私のファイルは、次のとおりです。/ main.htmlをし、main.js

  • クライアント - ><head></head>がここで定義されて

  • import/ui/layouts - > layout.htmlとlayout.jsを含むここでは<body></body>が定義されています。

  • インポート/起動/両方 - > router.js

ルータのファイル含まれています。私はtypeof(Template.layout)をCONSOLE.LOGとき

Router.configure({ 
    layoutTemplate : 'layout', 
    loadingTemplate : 'loading', 
    notFoundTemplate : 'notFound', 
    waitOn: function() { 
     return [ 
     Meteor.subscribe('allUsers'), 
     Meteor.subscribe('otherUser') 
     ]; 
    } 
}); 

Router.route('/',{ 
    name: 'home', 
    onBeforeAction: function() { 
     if(Meteor.userId()){ 
     Router.go('/new'); 
     } else { 
     this.next(); 
     } 
    } 
}); 

を、それがundefinedを返します。

は、だから私は... main.htmlとともに、クライアントのフォルダまでの両方layout.htmllayout.js移動したときにエラーが姿を消したが、まだ空白のページを示したが、「設定」という名前のページが見つからないというエラー(しかしsettings.htmlを与えましたとしかしながら、上記CONSOLE.LOG両方import/ui/pagesに存在しているのjsファイルは、オブジェクトを返さストレンジは

PS:。。。サイドノートで:

私は、サーバーのフォルダにmain.jsファイル内import '/imports/startup/client';を試してみました上記のhtmlをうまく機能させるには'Error: Cannot find module '/imports/startup/client'があります。上記の問題を解決するために最初にコメントしてください。

クライアントmain.jsにimport '../imports/ui/layouts/layout.html';またはimport '../imports/ui/pages';も追加しました。しかし、エラーはCannot find module '../imports/ui/pages'と表示され、設定はまだシステムに表示されません。

誰もがこれにいくつかの光を当てることができますか?ありがとう!

答えて

1

あなたのblaze htmlファイルを/clientに残す - htmlファイルをそのままインポートすることはできません。あなたのjsファイルはimportsディレクトリ構造に移行できますが、各ファイルから関数をエクスポートし、使用する必要がある場所でインポートする必要があります。個人的には、ブレーズプロジェクトを新しい構造に移行する価値があるかどうかはわかりませんが、反応を使用している場合はずっと便利です。

+0

上記の例では、Meteorの輸入にはスタートアップ、ui ...と記載されていますが、uiには個別のページがあります。それは純粋にjsとjsxのためですか?クライアントによって...それはクライアントのメインフォルダに制限されていますか、または/ startup/clientもインポートされていますか? – Thinkerer

+0

反応すると、実際にはjs/jsxとcssファイルのみがあり、どちらもインポートできます。 htmlファイルは実際には使用されません。 '/ client'配下のファイルやそのサブディレクトリは自動的に縮小され、バンドルされてクライアントに送られますが、' imports'の下にあるものはインポートされない限りクライアントに送られません。通常は '/ client/main。js'は最初のインポートを実行し、インポートしたファイルは他のファイルをインポートします。 –

関連する問題