2016-04-19 7 views
1

のためのjQueryのノードをシミング私はNPMからインストールモジュールを必要とファイルがあります:browserify

-- login.js -- 
require('jquery-form'); 

モジュールはjQueryの変数に依存している私はこれをbrowserifyingてるようwindow範囲に存在しかし、私は理解を私はそれをシムにする必要があります。したがって、私はbrowserify-シムをインストールしていると、この(package.jsonから)のようにそれを使用しています:

"browserify-shim": { 
    "./node_modules/jquery/dist/jquery.js": "jQuery" 
}, 

しかし、ときjquery-formの実行、jQueryが定義されていません。私は何が欠けていますか?

答えて

0

試してみてください。

{ 
    "browser": { 
    "jquery": "./node_modules/jquery/dist/jquery.js" 
    }, 
    "browserify-shim": { 
    "jquery": "$" 
    } 
} 

、あなたが必要:

var $ = require('jquery'); 
+0

"browser"キーワードを使用すると、jqueryパッケージが必要なときにエクスポートするファイルをスワップできますか?この場合、jqueryパッケージが必要なときはいつでも../dist/jquery.jsを使用するように言います。これはpackage.jsonの「メイン」にあるファイルなので、「ブラウザ」というキーワードは必要ありません(なぜそれを含めなかったのですか) - 正しいのでしょうか?または私は間違っていますか? – ekkis

+0

もし '' var $ = require( 'jquery') '(私はこれを' 'require( 'jquery-form')' 'の直前に行う必要があります)、' 'browserify-shim ":{" jquery ":" $ "}'? – ekkis

+0

いずれにせよ、私はそれを試したが役に立たなかった。 'jquery-form'モジュールは' $ 'の代わりに' jQuery'を見る必要があるので、 '' browserify-shim ":{" jquery ":" jQuery "}'を試してみました。私は 'jQuery = require( 'jquery')'( 'var jQuery ...'の代わりに)グローバルなスコープに置くことを考えましたが、それでも動作しません。私は何が欠けていますか? – ekkis

1

あなたはjquery-formの依存関係として "シム" jQueryをする必要があります。 これらがすべてnpm経由でインストールされている場合は、browserディレクティブは必要ありません。jquery-formにはのmainディレクティブがないため、ディレクティブを追加して、Browserifyにバンドルに含めるファイルを表示する必要があります。

ドキュメントのthis sectionを参照してください。

+0

これは好奇心が強いです(depends節で): '' jquery:$ "' - それはどうやって動作しますか?また、 '$'を混乱させる必要がありますか? _jquery-form_は '$' – ekkis

+0

ではなく 'jQuery'に依存していますので、あなたは正しいです - この場合、' $ 'として' jQuery'をエクスポートする必要はなく、 'jquery'に依存するだけですあなたの 'depends'指示文。私は簡単なテストをしました。あなたが上で追加した説明のために 'browser'指示文が必要です。 – YPCrumble

+0

私のquery-formのコピーには、 '/ jquery.form.js'を指し示すmainディレクティブがあります - 私はnpmVersion 1.3.24を使用しています。興味深いことに、 'package.json'に' dependencies:{jquery: "> = 1.5"} 'もありますので、まだ依存関係を示す必要がありますか? – ekkis