2017-05-02 3 views
0

次のコードをbundle.jsにブラウズして、フロントエンドに(他の.jsファイルをロードする前に)インクルードします。私はbrowserifyファイルは、単にこの本です:Browserifyが動作しません - なぜですか?

var firebase = require('firebase') 

私は、フロントエンドに含まれている次のファイルで、この変数に)(認可を呼び出すが、私はfirebaseが定義されていないというエラーを取得しますか?

+0

これまでにBrowserifyを使用したことはありますか? :) – Badacadabra

+0

いいえ私はちょうど何かの仕事をしようとしています – huzal12

+0

いくつかの説明をしたいですか? – Badacadabra

答えて

0

Browserifyは、ブラウザにCommonJS(ノード)モジュールを使用できるようにするモジュールバンドラです。これは、プロジェクトがCommonJSの表記規則(exports,)と輸入(require)モジュールに従わなければならないことを意味します。

あなたのモジュール(module.js

var foo = function() { 
    console.log('Foo'); 
}; 

var bar = function() { 
    console.log('Bar'); 
}; 

module.exports = { 
    foo: foo, 
    bar: bar 
}; 

あなたのエントリーポイント(main.js

var module = require('./module'); 

module.foo(); // Foo 
module.bar(); // Bar 

このコードは以下となります。ここでは基本的な例でありますNodeを使ってすぐに動作しますが、ブラウザはそれを解釈できません。これは、Browserifyが便利な場所です。

エントリポイントでコマンドbrowserify main.js -o bundle.jsを実行すると、Browserifyはすべての依存関係(ここではmodule.js)をトラバースし、バンドルにロードします。このバンドルはブラウザで使用できるので、スクリプトタグにロードすることができます:

<script src="bundle.js"></script> 
+0

正直言ってもまだ不明です。エラーが発生するのはなぜですか?私はすべてを正しくした、私はしませんでしたか? – huzal12

+0

あなたの依存関係が間違って管理されていると思います。あなたの質問では、他の.jsファイルをロードする前に 'bundle.js'を含めると言います。しかし、あなたがBrowserifyを使用する場合は、モジュールの周りにあなたのプロジェクトを整理し、独立したJSスクリプトファイルを避けることになっています... – Badacadabra

+0

さらに、 "私はこの変数にauthorize()を呼び出します。フロントエンド "として、単純なJSスクリプトファイルから変数にアクセスしようとしていると思われます。これは、Browserifyバンドルが独自のスコープを持つ大きなモジュールに似ているため動作しません。それは厳密に関数にカプセル化されています。 – Badacadabra

関連する問題