2016-12-04 21 views
0

私はmeteor.jsアプリケーションにサードパーティのAPIを統合しようとしています。 したがって、/blogルートにあるとき、アプリは外部クラスのメソッドを呼び出す必要があります。インポートされたクラスのメソッドは定義されていません

router.js

import blog from '../imports/scripts/blog'; 
FlowRouter('/blog', { 
    name: 'blog', 
    action: function(params) { 
    blog.init(); // here I get the error "init is not a function" (it's undefined) 
    } 
}); 

blog.js

export default class Blog { 
    constructor(){ 
    ... 
    } 

    init() { 
    console.log('init blog api'); 
    ... 
    } 
} 

私はES2015を有効にするために、最新の流星(1.4.2.3)と、以下のNPMパッケージを使用しています:

"babel-cli": "^6.18.0", 
"babel-core": "^6.18.2", 
"babel-loader": "^6.2.8", 
"babel-preset-es2015": "^6.18.0", 
"babel-runtime": "^6.18.0", 
"meteor-node-stubs": "^0.2.4", 
"webpack": "^1.13.3" 

セットアップで電話できないものが見つかりませんblog.init()

+2

あなたは 'VARブログ=新しいブログを(行う必要があり、あなたが'とinit( 'blog.init()' –

+0

あなたはクラスをエクスポートしていますが、そのインスタンスはエクスポートしていません。あなたは '../ imports/scripts/blog ';' 'と' 'const blog = new Blog();'の '' import blog' 'を実行する必要があります。 –

答えて

1

インポートクラス(クラスインスタンスではありません)を試してみてください。したがって、メソッドを呼び出すことはできません。あなたが何かblog.js

変更:これは、彼らのコメントにヤンMayatskiyとGothdoによって応答される

class Blog { 
    constructor(){ 
    ... 
    } 

    init() { 
    console.log('init blog api'); 
    ... 
    } 
} 
export default new Blog(); 
+1

[しないでください](http://stackoverflow.com/a/39079929/1048572)。 – Bergi

0

を、そのためのおかげで。 場合には、誰もが正しい答えを探していた。このように、私は、インポートクラスをインスタンス化するために必要な

:)

import Blog from 'blog'; 
const blog = new Blog(); 
blog.init(); 
関連する問題