2016-04-06 3 views
2

私はコードをバンドルするためにwebpackを使用しています。 これは私のmain.jsが、私はまたのような負荷のjqueryで試してみました

var $ = global.jQuery = require('jquery) 
    $('someSelctor').on('rest of the code.') // This is working fine 
    var importFile = require('someExport.js') 
    importFile.someFunction(); 

someExport.js

module.exports = { 
    someFunction :function(){ 
    $('someSelector').on(' some other code') // Error here. $ is not a function 
    } 
} 

jQueryの

main.jsをロードしていますどこファイルからの抜粋ですrequire('jquery')someExport.js。しかし、それは問題を解決しません。 jqueryよう はすでにmain.jsによってロードされている私はそれはあなたが

+0

あなたは生命維持のmain.js内のコードをラップしていますか? –

+0

https://github.com/webpack/expose-loaderを試すことができますか? https://webpack.github.io/docs/shimming-modules.htmlも参照してください。グローバルはwebpackで余分な作業を行います。 –

+0

@BhojendraNepalいいえIIFEではありません – brk

答えて

1

someExport.jsでのjQueryを必要:

var $ = require(jquery); 
module.exports = { 
    someFunction :function(){ 
    $('someSelector').on(' some other code') // Error here. $ is not a function 
    } 
} 
+0

問題が解決しました – brk

+0

bebrawの提案通りに解決方法が見つかりました。 webpack Provideplugin https://webpack.github.io/docs/shimming-modules.htmlを使用できます – brk

0

たぶん、あなたは自分のモジュールでこれを追加することができ

おかげファイルsomeExport.jsにjqueryのを使用する方法again.Alsoロードする必要がありますか?

var script = document.createElement("script"); 
script.setAttribute("src", "//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"); 
document.body.appendChild(script); 

これは、特定のスクリプトを作成することによってjQueryの追加を強制します。

ただし、最適化されているかどうかはわかりません(私はTampermonkeyスクリプトに使用しました)。

+0

Webpackはモジュールローダーです&この場合、webpackのようなモジュールローダーは使用しません – brk

関連する問題