1. ホーム
  2. jquery

[解決済み] Electron: jQueryが定義されていない

2022-03-16 08:40:31

質問

問題:Electronで開発中、jQueryを必要とするJSプラグインを使用しようとすると、scriptタグで正しいパスを読み込んでもプラグインがjQueryを見つけられません。

例えば

<body>
<p id="click-me">Click me!</p>
...
<script src="node_modules/jquery/dist/jquery.min.js"></script> //jQuery should be loaded now
<script>$("#click-me").click(() => {alert("Clicked")});</script>
</body>

この上のコードを実行しても、うまくいかないでしょう。実際、DevToolsを開き、コンソールビューに移動し、その中の <p> 要素を使用します。すると function $ is not defined といった具合になります。

解決方法は?

より良い、より一般的な解決策をIMO。

<!-- Insert this line above script imports  -->
<script>if (typeof module === 'object') {window.module = module; module = undefined;}</script>

<!-- normal script imports etc  -->
<script src="scripts/jquery.min.js"></script>    
<script src="scripts/vendor.js"></script>    

<!-- Insert this line after script imports -->
<script>if (window.module) module = window.module;</script>

メリット

  • 同じコードでブラウザと電子の両方で動作可能
  • すべてのサードパーティライブラリ(jQueryだけでなく)の問題を、それぞれを指定することなく修正します。
  • スクリプトビルド/パックフレンドリー(例:Grunt/Gulpで全てのスクリプトをvendor.jsにまとめることが可能)
  • は不要です。 node-integration を偽とする

ソース こちら