Eel. * не является функцией

#javascript #python #html #eel

#javascript #python #HTML #eel

Вопрос:

Я впервые пробую что-то с eel. У меня есть скрипт на python с некоторыми функциями, и я пытаюсь связаться с ними, используя @eel.expose , но это выдает ошибку javascript — main.html:10 Uncaught TypeError: eel.startEncryption is not a function вот мой код:

 <head>
    <title>Undefined</title>
    <link rel="stylesheet" href="w3pro.css">
    <script type="text/javascript" src="/eel.js"></script>
    <script>
        function startEncryption(mode){
            massage = document.getElementById("massage").value;
            code = document.getElementById("code").value;
            string = eel.startEncryption(mode, massage, code);
            document.getElementById("result").innerHTML  = string;
        }
    
    </script>
</head>
<body>
    <header class="w3-panel">
        <h1>Vigenere Encryption</h1>
    </header>
    <div class="w3-panel">
        <span>Message:<input type="text" id="massage"></span>
        <br>
        <span>Code:<input type="text" id="code"></span>
        <br>
        <span>Encrypted/Decrypted:<input type="text" id="result" readonly></span>
        <br>
        <input type="button" value="Encrypt" onclick="startEncryption(1)"> 
        <input type="button" value="Decrypt" onclick="startEncryption(2)">
        
    </div>
</body>

 
 import eel
eel.init('C:\Users\Fantomas\Documents\Programming\cipher\web')
eel.start('main.html')
@eel.expose
def startEncryption(mode : int, message : string, code : string):
    if mode == 1:
        ciphertext = encryptMessage(code, message)
    elif mode == 2:
        ciphertext = decryptMessage(code, message)
    return ciphertext;
 

У меня есть eel.js файл в моем каталоге

Комментарии:

1. поместите короткую версию вашего кода на python, которая является допустимой для выполнения.

2. есть и мой код на python

3. Поместите свой код на python, включая все части, связанные с eel, начиная с импорта и заканчивая запуском HTML-файла. Кроме того, основная часть HTML-кода содержит элементы message , code , и results DOM.

4. я добавил его туда

Ответ №1:

Модифицируйте свой:

 import eel
eel.init('C:\Users\Fantomas\Documents\Programming\cipher\web')
@eel.expose
def startEncryption(mode : int, message : string, code : string):
    if mode == 1:
        ciphertext = encryptMessage(code, message)
    elif mode == 2:
        ciphertext = decryptMessage(code, message)
    return ciphertext;
eel.start('main.html')
 

помещается eel.start('main.html') после раскрытия всех общих функций.

Ищу ваши комментарии.

Удачи вам

Комментарии:

1. спасибо, это сработало, я не знал, что мне нужно было указать открытую функцию перед запуском приложения

Ответ №2:

Очевидно, что отсутствие eel.start в конце вашего кода часто вызывает проблему, но позиция eel.init не имеет никакого отношения к этой конкретной проблеме.

Я просто хотел сказать вам, что иногда проблема заключается не в самом коде py, а в той части, где вы импортируете eel в свой html-код, помните, eel.js всегда генерируется везде, где была указана ваша папка eel.init, поэтому при импорте вашего eel.js в вашем HTML-кодеУбедитесь, что он находится в этой конкретной папке

Например, если вы указали веб-папку в своем коде py:

PYTHON:

 eel.init('web')
 

Затем, когда вы импортируете eel в html, он должен выглядеть следующим образом

 <script src="./eel.js"></script>
 

ПРИМЕЧАНИЕ: здесь файл .html также находится в веб-папке, и поэтому eel.js импортируется из того же каталога.

Так что да, это часто случается (по крайней мере, для меня) Убедитесь, что вы не допустили ошибки при импорте eel.js в вашем HTML-коде.