🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

jQuery

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

Q&A

解決済

1回答

6549閲覧

webpack4でnpmでインストールしたjQueryを使いたい

xyunow

総合スコア122

npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

jQuery

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

0グッド

0クリップ

投稿2020/07/02 20:52

編集2020/07/03 02:07

webpack4+jQuery+sass環境を作りたいのですが、
jQueryを読み込む設定がうまくいかず、下記のようなエラーが出てしまいます。

ERROR in ../js/index.js Module not found: Error: Can't resolve 'jquery' in '/private/var/www/test/resource/js' @ ../js/index.js 1:0-17 ERROR in ../js/calender.js Module not found: Error: Can't resolve 'jquery' in '/private/var/www/test/resource/js' @ ../js/calender.js 1:0-17 @ ../js/index.js ERROR in ../js/utility.js Module not found: Error: Can't resolve 'jquery' in '/private/var/www/test/resource/js' @ ../js/utility.js 1:0-17 @ ../js/index.js ERROR in ../js/validate.js Module not found: Error: Can't resolve 'jquery' in '/private/var/www/test/resource/js' @ ../js/validate.js 1:0-17 @ ../js/index.js

npm install jquery

上記のコマンドを実行し、node_modulesの中にjqueryパッケージは存在している状態です。

●ディレクトリ構成

. ├── common │ └── static │ └── webpack │ └── bundle.js └── resource └── env ├── node_modules └── package-lock.json └── package.json └── webpack.config.js └── js └── index.js └── utility.js └── calender.js └── validate.js └── scss └── style.scss └── utility └── utility.scss

●index.js

js

1import '../scss/style.scss'; 2import * as util from './utility.js' 3import * as calender from './calender.js' 4import * as validate from './validate.js' 5/////////////////////////////////////////////////////////////////////// 6$(".js_backdrop_trigger").on("click", util.backdropOpen); 7$(".js_backdrop_area").on("click", util.backdropAreaClose); 8$(".js_backdrop_close").on("click", util.backdropButtonClose); 9 10$(".js_dialog_trigger").on("click", util.dialogOpen); 11$(".js_dialog_close").on("click", util.dialogAreaClose); 12$(".js_dialog_close").on("click", util.dialogButtonClose); 13 14if($(".js_calender").length!=0){ 15 $(window).on('load', calender.initialSelect); 16 $(window).on('load', calender.changeSendDate); 17} 18$(".js_calender_prev").on("click", calender.prev); 19$(".js_calender_next").on("click", calender.next); 20 21$(".js_select_role").on("change", validate.contractCheck); 22

●package.json

json

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

●webpack.config.js

// プラグインを利用するためにwebpackを読み込んでおく const webpack = require('webpack'); const path = require('path'); module.exports = { // メインとなるJavaScriptファイル(エントリーポイント) entry: "../js/index.js", mode: "production", // ファイルの出力設定 output: { // 出力ファイルのディレクトリ名 path: path.resolve(__dirname, '../../common/static/webpack'), // 出力ファイル名 filename: "bundle.js" // hash値自動付与 変更時はwebpack再起動 // filename: "bundle_[hash].js" }, module: { rules: [ { test: /.scss/, //ローダーの処理対象となるディレクトリ include: path.resolve(__dirname, '../scss'), use: [ // linkタグに出力する機能 "style-loader", "css-loader", "sass-loader", ] } ] }, plugins: [ new webpack.ProvidePlugin({ $: "jquery", }), ], };

webpack.config.js内のplugins:をまるごと削除して、index.jsの1行目にimport $ from 'jquery';を記載しても以下のようなエラーが出てしまいます。

ERROR in ../js/index.js Module not found: Error: Can't resolve 'jquery' in '/private/var/www/test/resource/js' @ ../js/index.js 1:0-23 8:0-1 9:0-1 10:0-1 12:0-1 13:0-1 14:0-1 16:3-4 17:4-5 18:4-5 20:0-1 21:0-1 23:0-1

公式ドキュメントを読んでも、色々な記事を読んでみても自分と同じ状態らしきものがなく、お手上げ状態です…
長いですがアドバイスいただけると幸いです。よろしくおねがいします。

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

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

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

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

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

guest

回答1

0

自己解決

index.jsに

import $ from '../env/node_modules/jquery';

を追加したらいけました。
●index.js

js

1import '../scss/style.scss'; 2import $ from '../env/node_modules/jquery'; 3import * as util from './utility.js' 4import * as calender from './calender.js' 5import * as validate from './validate.js' 6/////////////////////////////////////////////////////////////////////// 7$('.js_slider').slick({ 8 arrows: false, 9 dots: true, 10}); 11$(".js_backdrop_trigger").on("click", util.backdropOpen); 12$(".js_backdrop_area").on("click", util.backdropAreaClose); 13$(".js_backdrop_close").on("click", util.backdropButtonClose); 14 15$(".js_dialog_trigger").on("click", util.dialogOpen); 16$(".js_dialog_close").on("click", util.dialogAreaClose); 17$(".js_dialog_close").on("click", util.dialogButtonClose); 18 19if($(".js_calender").length!=0){ 20 $(window).on('load', calender.initialSelect); 21 $(window).on('load', calender.changeSendDate); 22} 23$(".js_calender_prev").on("click", calender.prev); 24$(".js_calender_next").on("click", calender.next); 25 26$(".js_select_role").on("change", validate.contractCheck); 27

webpack.config.jsに記載していた、以下は不要でした
●webpack.config.js

js

1plugins: [ 2 new webpack.ProvidePlugin({ 3 $: "jquery", 4 }), 5 ],

投稿2020/07/03 06:44

xyunow

総合スコア122

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問