Webpackを使用して、必要なすべてのJavascriptファイルから1つのファイルscripts.js
を作成します。WebpackでjQueryプラグインを要求する
私main.js
以内に私は、三つのモジュールが必要です。
require('jquery');
require('readmore');
require('foundation');
マイwebpack.config.js
はこれです:
var path = require('path');
module.exports = {
entry: ["./js/main.js"],
output: {
path: path.resolve(__dirname, 'build'),
filename: "scripts.js"
},
resolve: {
modulesDirectories: ["bower_components", "node_modules"],
alias: {
jquery: '../bower_components/jquery/dist/jquery.js',
readmore: '../node_modules/readmore-js/readmore.js',
foundation: '../bower_components/foundation-sites/dist/js/foundation.js'
}
}
}
私の問題:readmore-js
はjQueryの - プラグインであるとして、それはそれ自体でのjQueryを必要とします。 私はWebPACKの実行後に、このエラーを得た:
ERROR in ./~/readmore-js/readmore.js
Module not found: Error: Can't resolve 'jquery' in '/Users/myName/www/myProject/node_modules/readmore-js'
@ ./~/readmore-js/readmore.js 17:4-31
@ ./js/main.js
@ multi main
を私の理解から、問題がreadmoreも「nodes_modules」ディレクトリ内のモジュールのjQueryをロードしたいということです。私の最初のアプローチは、moduleDirectories
をconfig-fileに追加することでこの問題を解決することでしたが、それでも動作しません。 この場合でも、プラグインはjQueryを再度読み込むべきではありません。
jQueryをグローバルにロードして、jQueryを必要とするすべてのモジュールを「見て、そこにある」と言うことができますか?それは助けているよう
、次はからコピーされたプラグインのreadmore.js
:
(function(factory) {
if (typeof define === 'function' && define.amd) {
// AMD
define(['jquery'], factory);
} else if (typeof exports === 'object') {
// CommonJS
module.exports = factory(require('jquery'));
} else {
// Browser globals
factory(jQuery);
}
}
あなたの答えは、Webpackコマンドが機能します。 '' 'Uncaught TypeError:$(...)。readmoreは関数ではありません at Object。このスクリプトでは、プラグインにアクセスできませんでした。 [...] '' ' 私はまだグローバル変数に問題があると思いますか? –
to7be
私も同様の問題があります。いくつかのプラグインがどのようにロードされ、他のプラグインがロードされていないのかは非常に謎です。私は既存のプロジェクトを持っていますが、仕事や仕事以外の理由が分からないのです。 – Wouter