質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

1458閲覧

webpackでjQueryをすべてのjsファイル内で使いたい

xyunow

総合スコア122

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2020/02/12 08:13

編集2020/02/12 08:15

webpack+scss+jQuery環境を作ろうとしています。
webpack+scssまではできたのですが、jQuery環境がうまくいきません。
index.js内でもutility.js内でも $ が使えるようにしたいです。

webpackでjqueryを使用、しかし「$ is not defined」のエラー
https://teratail.com/questions/215905
上記を参考にしてwebpack.config.jsにplugins:を記載したのですが、ターミナルでwebpack --watchコマンドを打った時点でエラーが出てしまいました。

webpack.config.jsの正しい書き方を教えていただきたいです。

ディレクトリ構造
ディレクトリ構造

webpack

1//webpack.config.js 2module.exports = { 3 // メインとなるJavaScriptファイル(エントリーポイント) 4 entry: "./js/index.js", 5 mode: "development", 6 // ファイルの出力設定 7 output: { 8 // 出力ファイルのディレクトリ名 9 path: `${__dirname}/dist`, 10 // 出力ファイル名 11 filename: "bundle.js" 12 // hash値自動付与 変更時はwebpack再起動 13 // filename: "bundle_[hash].js" 14 }, 15 module: { 16 rules: [ 17 { 18 test: /.css/, 19 use: [ 20 // linkタグに出力する機能 21 "style-loader", 22 "css-loader" 23 ] 24 }, 25 { 26 test: /.scss/, 27 use: [ 28 // linkタグに出力する機能 29 "style-loader", 30 { 31 loader: 'css-loader', 32 options: { 33 //相対パス利用する 34 url: false, 35 }, 36 }, 37 "sass-loader", 38 ] 39 } 40 ] 41 }, 42 plugins: [ 43 new webpack.ProvidePlugin({ 44 $: 'jquery', 45 }), 46 ], 47};

javascript

1//index.js 2import '../scss/test.scss'; 3// import $ from 'jquery' 4import * as util from './utility.js' 5/////////////////////////////////////////////////////////////////////// 6document.getElementById("js_open").addEventListener("click", util.modalOpen, false); 7$("#js_open").on("click", util.changeBig);

javascript

1//utility.js 2export function modalOpen() { 3 console.log("hello"); 4} 5 6export function changeBig() { 7 $("#js_open").css("width", "40px"); 8}

json

1//package.json 2{ 3 "scripts": { 4 "build": "webpack --watch" 5 }, 6 "dependencies": { 7 "css-loader": "^3.4.2", 8 "jquery": "^3.4.1", 9 "node-sass": "^4.13.1", 10 "sass-loader": "^8.0.2", 11 "style-loader": "^1.1.3", 12 "webpack": "^4.41.5", 13 "webpack-cli": "^3.3.10" 14 } 15} 16

error

1ReferenceError: webpack is not defined 2 at Object.<anonymous> (/private/var/www/webpack_test/webpack.config.js:42:13) 3 at Module._compile (/private/var/www/webpack_test/node_modules/v8-compile-cache/v8-compile-cache.js:192:30) 4 at Object.Module._extensions..js (internal/modules/cjs/loader.js:785:10) 5 at Module.load (internal/modules/cjs/loader.js:641:32) 6 at Function.Module._load (internal/modules/cjs/loader.js:556:12) 7 at Module.require (internal/modules/cjs/loader.js:681:19) 8 at require (/private/var/www/webpack_test/node_modules/v8-compile-cache/v8-compile-cache.js:161:20) 9 at WEBPACK_OPTIONS (/private/var/www/webpack_test/node_modules/webpack-cli/bin/utils/convert-argv.js:114:13) 10 at requireConfig (/private/var/www/webpack_test/node_modules/webpack-cli/bin/utils/convert-argv.js:116:6) 11 at /private/var/www/webpack_test/node_modules/webpack-cli/bin/utils/convert-argv.js:123:17 12 at Array.forEach (<anonymous>) 13 at module.exports (/private/var/www/webpack_test/node_modules/webpack-cli/bin/utils/convert-argv.js:121:15) 14 at /private/var/www/webpack_test/node_modules/webpack-cli/bin/cli.js:71:45 15 at Object.parse (/private/var/www/webpack_test/node_modules/yargs/yargs.js:567:18) 16 at /private/var/www/webpack_test/node_modules/webpack-cli/bin/cli.js:49:8 17 at Object.<anonymous> (/private/var/www/webpack_test/node_modules/webpack-cli/bin/cli.js:366:3) 18 at Module._compile (internal/modules/cjs/loader.js:774:30) 19 at Object.Module._extensions..js (internal/modules/cjs/loader.js:785:10) 20 at Module.load (internal/modules/cjs/loader.js:641:32) 21 at Function.Module._load (internal/modules/cjs/loader.js:556:12) 22 at Module.require (internal/modules/cjs/loader.js:681:19) 23 at require (internal/modules/cjs/helpers.js:16:16) 24 at Object.<anonymous> (/private/var/www/webpack_test/node_modules/webpack/bin/webpack.js:156:2) 25 at Module._compile (internal/modules/cjs/loader.js:774:30) 26 at Object.Module._extensions..js (internal/modules/cjs/loader.js:785:10) 27 at Module.load (internal/modules/cjs/loader.js:641:32) 28 at Function.Module._load (internal/modules/cjs/loader.js:556:12) 29 at Function.Module.runMain (internal/modules/cjs/loader.js:837:10) 30 at internal/main/run_main_module.js:17:11 31npm ERR! code ELIFECYCLE 32npm ERR! errno 1 33npm ERR! @ build: `webpack --watch` 34npm ERR! Exit status 1 35npm ERR! 36npm ERR! Failed at the @ build script. 37npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ReferenceError: webpack is not defined

エラーメッセージのとおりです。webpack.config.js内でwebpackを使う場合、const webpack = require('webpack');のような呼び出しが必要です。


本題ではありませんが、ProvidesPluginは使わず、import $ from 'jquery'を、jQueryを使うファイルごとに書くことをおすすめします。

投稿2020/02/12 08:30

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xyunow

2020/02/12 08:36

回答いただきありがとうございます。 webpack is not definedって何だ…?と思っていたのですが、 new webpack.ProvidePluginでwebpackを使っているから呼び出しが必要なんですね。もう少し深堀りしてみます。 >ProvidesPluginは使わず、import $ from 'jquery'を、jQueryを使うファイルごとに書くことをおすすめします。 書き方についてもありがとうございます。ファイルごとにimport $ from 'jquery'を書きたくないなぁと思いやり方を探っていたのですが(書くのを忘れそうなので)、 そのようにしようと思います。
guest

0

自己解決

webpack.config.jsの一番最初の行に以下を追加したところいけました。

const webpack = require('webpack');

投稿2020/02/12 08:27

xyunow

総合スコア122

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問