Electron: لم يتم تعيين jQuery بشكل عام لأنه تم تعريف "module"

تم إنشاؤها على ٦ مايو ٢٠١٤  ·  71تعليقات  ·  مصدر: electron/electron

يحتوي jQuery على شيء من هذا القبيل:

if ( typeof module === "object" && typeof module.exports === "object" ) {
  // set jQuery in `module`
} else {
  // set jQuery in `window`
}

الوحدة النمطية ، حتى في البرامج النصية من جانب المتصفح. يؤدي هذا إلى تجاهل jQuery للكائن window واستخدام module ، لذلك لن تجد البرامج النصية الأخرى $ ولا jQuery في النطاق العام ..

لست متأكدًا مما إذا كان هذا خطأ في jQuery أو atom-shell ، لكنني أردت وضع هذا على الويب ، حتى لا يبحث الآخرون طالما فعلت ذلك.

التعليق الأكثر فائدة

فقط قم بإلغاء تعيين module .

كنت أرغب في جعل صفحة الويب الخاصة بي تعمل في كل من المتصفح والإلكترون.
كما هو موضح في هذا الموضوع ، يعرض الإلكترون module عالميًا عند nodeIntegration: true ، والذي يراه jQuery ويتفاعل وفقًا لذلك:

if ( typeof module === "object" && typeof module.exports === "object" ) {
    // bind to module
} else {
    // bind to window
}

تمكنت من الحصول على jQuery لربط الكائن window واستخدام nodeIntegration: true خلال القيام بما يلي في ملف html الخاص بي:

<script>if (typeof module === 'object') {window.module = module; module = undefined;}</script>
<script src="//code.jquery.com/jquery-1.12.0.min.js"></script>
<script src="//code.highcharts.com/highcharts.js"></script>
<script>if (window.module) module = window.module;</script>

أمل أن هذا يساعد شخصاما.

ال 71 كومينتر

هذا ليس خطأ في أي من النظامين ، لديك نفس المشكلة عند استخدام المتصفح. يرى jQuery أنه يتم تشغيله في بيئة CommonJS ويتوقع استخدامه على هذا النحو.

ومع ذلك ، فإن الحل بسيط نسبيًا. بدلاً من تحميل jQuery كعلامة نصية ، قم بتحميله عبر يتطلب:

window.$ = window.jQuery = require('/path/to/jquery');

أتفق مع ChiperSoft ، هذا سلوك متوقع في بيئة CommonJS ، لذلك قمت wontfix . وشكرا لتقاسم النتائج الخاصة بك.

ChiperSoft ، أين يجب أن أضع ملف jquery.js للحصول على عمل require('jquery') ؟ لقد حاولت وضعه في نفس المستوى مثل package.js و main.js ولكن لا يبدو أن وقت التشغيل يلتقطه.

يمكنك استخدام require('jquery.js') لاحظ ملف .js في النهاية لتحميل jquery المرتبط بملف HTML الخاص بك.

عذرًا ، لقد استخدمت window.$ = window.jQuery = require('/path/to/jquery'); كما هو مذكور ولكنه لا يعمل ،
Uncaught Error: Cannot find module 'scripts/jquery-1.10.2.min.js' module.js:339

أنا أستخدم ذلك طوال الوقت وهو يعمل بشكل رائع! إليك ما أستخدمه ، كن حريصًا على المسار:

window.$ = window.jQuery = require('./scripts/jquery-2.1.1.min.js');

frankhale أوه ، لقد عملت مع ./ ، شكرًا!

مدهش! لقد أصابني شيء المسار أيضًا.

إذا كان تطبيقك لا يحتاج إلى تكامل العقدة ، أضف "node-integration": false إلى خيارات BrowserWindow الخاصة بك. في هذه الحالة module.exports غير متاح ، يعمل jQuery كما هو متوقع.

@ kabalage عملت بشكل رائع ، شكرا!

: +1:

مشى إلى نفس القضية. قم بتثبيت jQuery عبر NPM ثم طلبها وعمل.

ماذا لو كان هناك حاجة إلى تكامل العقدة و jquery دون الحاجة ...

أحاول أن أفهم هذا لأنه يبدو أنه شيء يمكنني استخدامه. ومع ذلك ، أتساءل متى يمكنك التأكد من أنه يمكنك استخدام $ بأمان. تسجيل $ مباشرة بعد هذا السطر سوف يكون مطلوبًا وليس jquery لأن طلب غير متزامن؟

window. $ = window.jQuery = تتطلب ('/ path / to / jquery') ؛
console.log ($) // السجلات 'تتطلب' ليس 'jQuery'

dieroux حاول تثبيته عبر npm:

npm install jquery

هذا عمل بالنسبة لي أثناء محاولة نفس الشيء. ثم لا تحتاج إلى إعطاء مسار ، ما عليك سوى أن تقول:

window.$ = window.jQuery = require('jquery');
console.log( [$, jQuery ]);

ماذا لو احتجنا إلى تكامل العقدة ، ولا يمكننا استخدام يتطلب ("شيء")؟
حاليا يعمل عن طريق القيام "حذف وحدة". قبل تحميل الاشياء الاشكالية.
ما هو تأثير القيام بذلك؟

أواجه مشكلات مماثلة حيث يمكن تحميل jquery بشكل صحيح في المرة الأولى التي أحتاجها في برنامج نصي للتحميل المسبق على عرض ويب. ومع ذلك ، في المرة الثانية تتم الإشارة إلى jquery من صفحة خارجية ، السطر لتعيينه عبر:

  try {
        module.exports = null;
        if (typeof require === 'function') {
          alert('window: ' + window);
          alert('jquery: ' + window.jQuery);
          alert('export: ' + module.exports);
          if ( !window.jQuery ) {
            alert('before load');
            window.jQuery = require('./node_modules/jquery/dist/jquery.js');
            alert('after load');
            window.$ = window.jQuery;
            alert('after assignment');
         }
          alert('jquery: ' + window.jQuery);
        }
    } catch(e) {
        alert('failed load.');
        console.log(e);
    }

يطرح خاصية لا يمكن القراءة createElement of undefined في وحدة التحكم عند التعيين إلى window.jQuery من تتطلب ، مما يؤدي إلى عدم تحميل jQuery.

رسالة الخطأ على وحدة التحكم هي:
سجلت صفحة الضيف رسالة: خطأ في النوع: لا يمكن قراءة الخاصية 'createElement' لخط غير محدد: 40

أي أفكار إضافية حول كيفية تحميل jquery بنجاح على الصفحات اللاحقة؟

شكرا.

كان هذا هو أول شيء أتعثر فيه عندما مررت عبر بداية سريعة للإلكترون وحاولت التفاف تطبيق محلي - شيء ما يعمل في الكروم لا يحدث فجأة في الانتخابات. لا يساعد بالطبع وجود خطأ مدفون في أحمال الوحدة الزاويّة الفاشلة ، لذلك افترضت أن هناك مشكلة في ترتيب تحميل البرنامج النصي ، وهي الطريقة التي عثرت بها على هذا الموضوع. ربما ستساعد الكلمات الرئيسية الآخرين.

نجح حل

مرحبًا بالجميع ، أريد فقط إضافة بعض المعلومات حول هذه المشكلة ، إذا قمت بلصق رمز مكتبة jquery في وحدة التحكم الإلكترونية $ وتمت إضافة jQuery كدالة في كائن النافذة. يمكنني تشغيل مسج.

تمت الإشارة إلى jQuery بعلامة البرنامج النصي ، نفس الخطأ. يجب أن "node-Integration": false في BrowserWindow ()

مرحبًا يا شباب ... لست متأكدًا من سبب إغلاق هذه المشكلة ، فلا يزال هناك بالتأكيد مشكلة هنا ، اسمحوا لي أن أوضح. إذا قمت بتثبيت jQuery محليًا عبر NPM وقمت بتحميل ملف html محلي باستخدام:

mainWindow. $ = تتطلب ('jQuery')؛
mainWindow.jQuery = تتطلب ('jQuery') ،

ثم يعمل كما هو متوقع. ومع ذلك ، إذا قمت بتطبيق mainWindow.loadUrl ('http://external.site.com ") ؛

أحصل على الأخطاء المذكورة حيث لم يتم تعريف $ و jQuery. إن تعطيل تكامل العقدة ليس في الحقيقة إجابة مقبولة ؛ هذا هو سبب استخدامي للإلكترون في المقام الأول ، أحتاجه.

سأكون حريصًا على الوصول إلى المصدر وتحرّي الخلل وإصلاحه بنفسي ، لكنني اعتقدت أنني سأرى ما إذا كان لدى أي شخص أي معلومات إضافية حول هذا لتوجيهي في الاتجاه الصحيح قبل أن أذهب إلى هناك. هل تمكن أي شخص من جعل هذا يعمل مع تكامل العقدة ضد المواقع الخارجية؟

شكرا ... وعمل عظيم راجع للشغل. كل شيء جديد وجميل ، مثل هذا ، سيبدأ ببعض التجاعيد.

أطيب التحيات

/ دبليو

لقد جعلتها تعمل مع تكامل العقدة.

  1. قم بتثبيته باستخدام npm ، لذلك يتم تعريفه في package.json
  2. استخدم يتطلب مع اسم الوحدة <script>window.$ = window.jQuery = require('jquery');</script>
  3. لا تستخدم المسار في طلب المعلمة.
  4. لا تقم بتثبيت trough bower ، فسوف تجعلك تستخدم المسار في معلمة تتطلب.
  5. إذا كنت تستخدم bootstrap ، فأنت بحاجة إلى تحميل jQuery أولاً.

كل ما سبق مدعوم من تجربتي فقط.

سيعمل

    <script>window.$ = window.jQuery = require('jquery');</script>
    <script src="path_to/bootstrap.js"></script>

سوف لن

    <script>window.$ = window.jQuery = require('./path/to/jquery.js');</script>
    // or
    <script src="path_to/jquery.js"></script>
    <script src="path_to/bootstrap.js"></script>

مرحبا دلمديب ، شكرا على الرد السريع. هل يعتمد الحل الخاص بك على التحكم في الموقع الخارجي؟ أحاول تحميل موقع ليس لدي وصول المصدر إليه. لكن ما قلته عن pack.json مثير للاهتمام. لقد قمت بتثبيت jQuery من خلال npm (واستخدمت إعادة البناء الموثقة للإلكترون) وكما قلت ، يمكنني استخدام jQuery مع ملف HTML محلي ، ولكن لم يتم تعريف jQuery في الحزمة الخاصة بي. json ..... أوه ، لقد اختبرت مع تعطيل تكامل العقدة وبينما ينجح ذلك ، فهذا ليس ما أحتاجه. شكرا.

أردت فقط تحديث هذا في حالة تعرض شخص آخر لنفس المشكلة. كانت الطريقة التي عملت بها حول هذا (بعد تنزيل 10 غيغابايت من مصدر الإلكترون) موجودة بالفعل في الوثائق لتبدأ. بدلاً من استدعاء عنوان url الخاص بالموقع الخارجي ، قمت بتحميل ملف HTML محلي واستخدمت عرض ويب من ملف html هذا لتحميل الموقع الخارجي. يتم تحميله بشكل مثالي مع تمكين تكامل العقدة. ما عليك سوى إلقاء نظرة في المستندات للحصول على Webview ، فهي واضحة جدًا للأمام. كما أشكر بول في غرفة الدردشة لمساعدتي في البدء بالمصدر. إذا كان أي شخص يتساءل عن استخدام Atom (بالطبع) لتشفير Electron و WinDbg على النوافذ لتصحيح الأخطاء و Ninja للترجمة. كان تجميع FYI للمصادر أمرًا سهلاً وسريعًا بشكل مدهش ، فقد تم تجميعه أولاً باستخدام البرامج النصية والوثائق المقدمة. مرة أخرى ، عمل عظيم يا رفاق!

تضمين التغريدة يجب أن نقول أن المثال مضلل بعض الشيء إذا تم النظر في الأمان.

@ Shufeng01 هتاف ماتي ، أنا قادم في هذا البرد من. صافي الأرض حتى أشعر وكأنه n00b كاملة. أنت محق في أن الأمان كان يمثل مشكلة ، ولكن استخدام علامة disablewebsecurity على طريقة عرض الويب نفسها أدى إلى حل معظمها. أعتقد أن الأمان ، بشكل عام ، هو التحدي الأكبر لجلب الويب إلى سطح المكتب ... ولكنه يستحق الجهد المبذول. صخور الإلكترون.

diimdeep شكرًا ، الحل يناسبني (ليس ما يريده WolfieWerewolf !)

هذه مشكلة صغيرة بالنسبة لنا. نقوم بتجميع jquery مع تطبيقنا js ، ثم يتم استخدام JS المتسلسلة هذه في الإنشاء لكل من إصدارات الويب وسطح المكتب (كنا نستخدم NWJS). قد يكون تثبيت NPM خيارًا لنا ، لكنه ليس مثاليًا في حالتنا لعدة أسباب.

ألا توجد طريقة نظرية لجعله يعمل باستخدام علامات البرنامج النصي؟

bgSosh ، لماذا لا تعطل تكامل العقدة (اقرأ عن المفتاح node-integration هنا )؟ إذا قمت بذلك ، يجب أن تعمل علامات البرنامج النصي بشكل صحيح. إذا كنت بحاجة إلى بعض الأشياء المتعلقة بالعقدة ، فيمكنك القيام بذلك في برنامج نصي preload (لديهم دائمًا تكامل العقدة).

tiktin ، هل يمكنك من فضلك توضيح كيفية القيام بذلك في التحميل المسبق؟ أنا جديد على الإلكترون وتمكنت من الحصول على برنامج نصي للتحميل المسبق لتنفيذه (على الأقل يبدو أنه لم يتم تنفيذه ، وحدة التحكم لا تعمل ، تغيير window.myExposedIPC = يتطلب ('ipc') على سبيل المثال غير متاح لاحقًا وما إلى ذلك.

لقد عملت في حالة وجود أي شخص لديه نفس المشكلة: https://github.com/atom/electron/issues/1753#issuecomment -157409572

@ matthiasg سعيد لأنك عملت. أضفت بعض التعليقات على مثالك.

عندما يتم تعطيل تكامل العقدة وتريد القيام ببعض مهام العقد في نص التحميل المسبق الخاص بك ، فمن المهم الاحتفاظ بمرجع لأي عقدة عالمية تحتاجها. تحتاج إلى القيام بذلك ، لأنه في العلامة التالية ، يتم حذف المراجع العامة (هذه هي الطريقة التي يتم بها تنفيذ تعطيل تكامل العقدة) ، لذلك إذا لم يكن لديك مرجع وحاولت بعد ذلك طلب شيء ما في مكالمة دالة أو مؤقت ، سوف تفشل.

tiktin شكرا. بالطبع كان هذا جزءًا منه ، ولكن ما كنت أفتقده هو وثائق process.once('loaded', ... ) بمجرد أن أصبح ذلك في مكانه ، يمكنني بالفعل كشف واجهات برمجة التطبيقات التي أردتها.

أهلا يا أصدقاء،

نظرًا لأن أيا مما سبق لم ينجح معي (باستخدام w2ui و JQuery مع كل من الإلكترون وصفحة HTML المستقلة ، دعنا أيضًا يستخدم w2ui jQuery) ، شعرت بالحاجة إلى نشر حل عملي هنا:

<html>
<head>
    <title>MyApp</title>
    <link rel="stylesheet" type="text/css" href="./lib/w2ui-1.4.3.css"/>
    <script type="text/javascript" src="./lib/require.js"></script>
    <script type="text/javascript" src="./lib/jquery-2.1.4.js" onload="$ = jQuery = module.exports;"></script>
    <script type="text/javascript" src="./lib/w2ui-1.4.3.js"></script>
</head>
<body>
<script type="text/javascript">
    // use global $ and w2ui here... 
    ...

أنا مبتدئ في JS وأجري دراسة تقنية والآن أشعر بالقلق بعض الشيء بشأن تحميل هذه الوحدة الغامضة. قد يكون هذا سؤالًا سخيفًا ولكن لماذا يقوم الإلكترون بتحميل وحدات JS بشكل مختلف تمامًا عن المتصفحات المعتادة عند تحميل صفحة HTML؟

forman هل عطلت تكامل العقدة

سيعمل

requirejs(['require', '../require.config'], function (requirejs, config) {
        //fixed jQuery isn't set globally
        requirejs(['jquery'],function(jquery){
            window.$ = window.jQuery =jquery;
        });
        // update global require config
        window.requirejs.config(config);
        // load app
        requirejs(['main'],function(main){
        });
    });

forman شكرا !! لم ينجح أي مما سبق باستثناء الحل الخاص بك. (باستخدام 0.35.5 مسبقة الصنع من الإلكترون)
etiktin لقد

أعتقد أنه يجب علي إضافة مشكلتنا والحل إلى هذا الموضوع للرجوع إليه في المستقبل.

نقوم بتحميل عنوان url خارجي في عرض ويب ونحتاج إلى تنفيذ Javascript الخاص بنا والذي يمكنه استخدام الإلكترون / العقدة. لا يعد تمكين تكامل العقدة على عرض الويب خيارًا لأن هذا سيؤدي إلى كسر jQuery الذي يتم استخدامه بواسطة عنوان url الخارجي.

ما قمنا به في النهاية هو إضافة برنامج نصي للتحميل المسبق إلى Webview حيث وضعنا الوحدات التي نحتاجها في النطاق العالمي. وهذا يجعلهم متاحين لاحقًا عند تنفيذ جافا سكريبت الخاص بنا.

preload.js:

global.ipcRenderer = require('electron').ipcRenderer;

وبعد ذلك يمكننا الوصول إلى ipcRenderer مثل:

webview.executeJavaScript("ipcRenderer.sendToHost('hello');");

Uncaught Error: Cannot find module 'jquery' ولا شيء يساعد من هذا الموضوع = /

فقط قم بإلغاء تعيين module .

كنت أرغب في جعل صفحة الويب الخاصة بي تعمل في كل من المتصفح والإلكترون.
كما هو موضح في هذا الموضوع ، يعرض الإلكترون module عالميًا عند nodeIntegration: true ، والذي يراه jQuery ويتفاعل وفقًا لذلك:

if ( typeof module === "object" && typeof module.exports === "object" ) {
    // bind to module
} else {
    // bind to window
}

تمكنت من الحصول على jQuery لربط الكائن window واستخدام nodeIntegration: true خلال القيام بما يلي في ملف html الخاص بي:

<script>if (typeof module === 'object') {window.module = module; module = undefined;}</script>
<script src="//code.jquery.com/jquery-1.12.0.min.js"></script>
<script src="//code.highcharts.com/highcharts.js"></script>
<script>if (window.module) module = window.module;</script>

أمل أن هذا يساعد شخصاما.

tomkel هنا حل آخر:

<script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
<script>window.jQuery = window.$ = module.exports;</script>

في حالتي ، أحتاج إلى أن أكون قادرًا على تشغيل تطبيقي كموقع ويب وتطبيق إلكتروني. هذا هو الحل الخاص بي:

<!-- Launched with Electron -->
<script>
    if ('require' in window) {
        window.$ = window.jQuery = require('jquery');
    }
</script>

<!-- From CDN, Bower, etc... -->
<script src="https://code.jquery.com/jquery-2.2.0.js"></script>

<!-- Others libraries depending on jQuery -->
<script src="..."></script>

dkfiresky نعم ، يبدو أن هذا يعمل أيضًا. ومع ذلك فأنا أستخدم Highcharts جنبًا إلى جنب مع jQuery. تقوم Highcharts بعمل مماثل ، وتضع نفسها على module إذا كانت موجودة. لأي سبب من الأسباب لم أتمكن من الحصول عليها

<script>window.Highcharts = module.exports;</script>

للعمل. لقد قمت بتحديث تعليقي السابق ليعكس ذلك.

tomkel حلك بالإخفاء المؤقت لـ module يعمل جيدًا بالنسبة لي. كانت مشكلتي أثناء الترحيل من nw.js مع ngDialog بافتراض أنه في بيئة CommonJS تفشل في require('angular') وتسجيل نفسها كوحدة زاويّة.

في Electron 0.36.7 أجد أنه لا يمكنني عمل window.$ = require('jquery'); بسيط لأنه سيفشل في العثور على الوحدة. لا يبدو أن العارض لديه نفس مسار دقة الوحدة النمطية مثل العملية الرئيسية

في الواقع هذا لا يعمل لأن jQuery سيتم تشغيله في العملية الرئيسية التي لا تحتوي على document . و require('jquery') لم يعمل معي لأنني أخدم الصفحة عبر HTTP مثل # 4243. لإصلاح هذا ، حاولت إضافة مسارات الوحدة من العملية الرئيسية إلى عملية العارض من خلال:

require('electron').remote.process.mainModule.paths.forEach(function(path) {
    require('module').globalPaths.push(path);
});

بعد ذلك يمكنني أن أفعل require('jquery') بدون مشاكل. لست متأكدًا من التأثير الآخر الذي قد يحدثه هذا بالرغم من ذلك

وتطلب ('jquery') لم ينجح معي لأنني أخدم الصفحة من خلال HTTP مثل # 4243.

إذا كنت تسمح للمحتوى البعيد بالوصول إلى node.js ، فإن تطبيقك غير آمن للغاية ، فأنت بحاجة إلى تعطيل تكامل العقدة عند تشغيل المحتوى البعيد واستخدام برنامج نصي للتحميل المسبق

حتى لو كان "المحتوى البعيد" مضيف محلي؟ أنا أستخدم العقدة لبناء الصفحة وتقديمها لي بدلاً من القراءة من ملف محلي ، هذا كل شيء

التوسيع على dkfiresky @ ، قد تحصل على Uncaught ReferenceError: module is not defined في إصدار المتصفح.

إذا كان الأمر كذلك ، فجرب هذا:

<script src="./bower_components/jquery/dist/jquery.min.js"></script>
<script>window.jQuery = window.$ = typeof module === 'object' ? module.exports : jQuery</script> 

سيتم إلغاء تعريفdspint module فقط في حالة تعطيل تكامل العقدة ، لذلك ربما يجب عليك استخدام المثال الخاص بي فقط مع تمكين تكامل العقدة.

إذا كنت تستخدم window.open ، يمكنك تمرير nodeIntegration=0 مع خيارات النافذة.

window.open('https://your.cool/url', 'title', 'nodeIntegration=0');

انا افعل:

<script>
  var saveModule = module;
  delete module;
</script>
  <script src="jquery.js"></script>
  <script src="jquery-ui.js"></script>
<script>
  module = saveModule;
</script>

واجهت نفس مشكلةgnail. كان لدي خادم عقدة يدير مشروعًا زاويًا. رمزه أصلحه لي.

require('electron').remote.process.mainModule.paths.forEach(function(path) {
  require('module').globalPaths.push(path);
});

إنه يعمل بالنسبة لي 😄

<script>
    window['old_module'] = window['module'];
    delete window.module;
</script>

<script src="any_lib_like_jquery.js" />

<script>
    window['module'] = window['old_module'];
    delete window.old_module;
</script>

أواجه هذه المشكلة ، لقد جربت بالفعل كل هذا الموضوع. لكن لا شيء يعمل ، أنا عالق في البداية
للجميع.
أنا أستخدم مندوب بداية الإلكترون

PauloGaldo في الأساس أي حل في هذا الموضوع يجب أن يعمل. يرجى نشر المقتطف ذي الصلة من التعليمات البرمجية الخاصة بك وجميع رسائل الخطأ التي تواجهها.

ChiperSoft هل يمكنك أن تخبرني من فضلك أين يجب أن أستخدم الكود الخاص بك؟

@ tomkel جميل جدا!
أخيرًا حصلت على الماسونية للعمل داخل الإلكترون!

لسبب ما ، ما زلت غير قادر على جعل jQuery يعمل في كل من المتصفح وتطبيق Electron.
يعمل تطبيق الويب الخاص بي بشكل جيد في المتصفح بينما عندما أحاول تحميل نفس عنوان url عبر تطبيق الإلكترون ، فإنه يرمي -

image

Webapp - https://github.com/zulip/zulip
تطبيق Electron - https://github.com/zulip/zulip-electron

يستخدم تطبيق الويب إصدار jquery 1.12.1 عبر npm.
لا يمكنني إيقاف تشغيل تكامل العقدة لأنني أحتاجه في عملية العارض الخاصة بي.
أواجه صعوبة في حل هذا. هل يعرف أي شخص كيف يعمل؟
سم مكعبaaaaahaaaaamaykefreitaspaulcbettstomkeldkfiresky

تضمين التغريدة حاولت تضمين شفرتك في preload.js تطبيقي ولكني

englishextra لا ، لست بحاجة إلى استفسار في تطبيقي. انظر الى كود التحديث هنا . لا يمكنني تضمين الرمز الخاص بك في منطق تطبيقي حيث إنني أستخدمه فقط لتحميل عنوان url المحدد ، شاهد هذا .

لقد حللت هذه المشكلة مع هذا

<script type="text/javascript" src="js/jquery.min.js" onload="window.$ = window.jQuery;"></script>

وحدد

webPreferences: {
            nodeIntegration: false, 
        }

إذا كنت مع imorot jQuery مثل هذا nodeIntegration: true,

<script type="text/javascript" src="js/jquery.min.js" onload="window.$ = window.jQuery = module.exports;"></script>

إشارة إلى
https://github.com/electron/electron/issues/345

أعني ، يبدو أنها مشكلة سيئة ، فلماذا لا تدرجها في الإلكترون الفعلي؟ ربما تدمج مكتبات JavaScript الرئيسية في Electron؟

هناك احتمالات ، إذا كنت تستخدم jQuery في تطبيق Electron ، فأنت تفعل شيئًا خاطئًا جدًا أو على الأقل غير فعال.

<script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
<script>if (typeof module === 'object') {window.jQuery = window.$ = module.exports;};</script>

drowlands يبدو أن تضمين 3party libs في Electron فكرة سيئة. تخيل روتين التحديث ، على سبيل المثال ، أو اختيار إصدار.
amhoho هذا لأنك تحتاج إلى require jQuery ، أو تعديل كود init الخاص به في الوظيفة العليا - مع ترك factory( global );

هنا:

( function( global, factory ) {

    "use strict";

    if ( typeof module === "object" && typeof module.exports === "object" ) {

        // For CommonJS and CommonJS-like environments where a proper `window`
        // is present, execute the factory and get jQuery.
        // For environments that do not have a `window` with a `document`
        // (such as Node.js), expose a factory as module.exports.
        // This accentuates the need for the creation of a real `window`.
        // e.g. var jQuery = require("jquery")(window);
        // See ticket #14549 for more info.
        module.exports = global.document ?
            factory( global, true ) :
            function( w ) {
                if ( !w.document ) {
                    throw new Error( "jQuery requires a window with a document" );
                }
                return factory( w );
            };
    } else {
        factory( global );
    }

أنا أقوم بتحميل libs عبر fetch / Promise أو xhr ، لذلك لدي هذا الروتين لإزالة عمليات التحقق من الوحدة في libs البائعين.
RRorg غريب ما تقوله

علامة

kabalage أعتقد أن التكوين في رسالتك أعلاه قديم. يبدو أنه يجب أن يكون هكذا الآن:

const window = new BrowserWindow({
  webPreferences: {
    nodeIntegration: false, 
  },
});

في المستندات الرسمية:
https://electronjs.org/docs/faq#i -can-not-use-jqueryrequirejsmeteorangularjs-in-electron
""