внутренние HTML коды не работают, если программе требуется время для запуска? - PullRequest
0 голосов
/ 22 марта 2020

У меня есть программа Python, выполнение которой занимает около 5-6 секунд, прежде чем генерировать вывод. Этот вывод должен быть «подан» на страницу HTML. javascript написано для облегчения этой серии действий: 1. Получить сегодняшнюю дату 2. Вставить сегодняшнюю дату в python, который получит доступ к базе данных Googlesheet и вернет вывод, который будет передан обратно в Javascript 3. Javascript помещает этот вывод на страницу с помощью метода document.getElementById('elem').innerHTML.

Моя страница HTML не отражает изменения и отображает текст HTML по умолчанию. Я решил опустить свой Python -код, потому что я знаю, что python программа работает так, как она должна быть. Но я буду рад дополнить его, если потребуется. Надеюсь, кто-нибудь может мне помочь, пожалуйста:

test. html

<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
        <title>Timetrack</title>
    </head>

    <body onload="writeToFrontend()"> 
        <div id="clockingMode">Loading...</div>
    <script src="../attendance_mod.js"></script>
    </body>
</html>

test. js

let {PythonShell} = require('python-shell');

function getCurrentDate() {
    // These are just some codes to get today's date
    var tmonth=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];

    var d=new Date();
    var nmonth=d.getMonth(),ndate=d.getDate(),nyear=d.getFullYear();
    if(ndate<=9) ndate="0"+ndate;
    var todayDate = ndate+"-"+tmonth[nmonth]+"-"+nyear;

    console.log('Today\'s Date is: '+todayDate);
    return todayDate;
}

function activatePython() {
    // Today's date is fed into Python program to generate an output message, output message intended to go into HTML
    let options = {
        mode: 'text',
        pythonPath: 'env/bin/python',
        pythonOptions: ['-u'], // get print results in real-time
        scriptPath: '', // this is just the directory to the script path, do not include name of script.
        args: [getCurrentDate()]
      };

      PythonShell.run('clocking_mode.py', options, function (err, results) {
        if (err) throw err;
        // results is an array consisting of messages collected during execution
        console.log('results: %j', results);
        console.log(results[(results.length-1)]);
        return results[(results.length-1)];
      });
}

async function writeToFrontend() {
  var clockingMode = await activatePython()
    .then(() => document.getElementById('clockingMode').innerHTML='<p>'+clockingMode+'</p>')
    .catch((err) => console.error(err));
}

Это сообщение об ошибке, которое я получил когда я бегу проверяю:

Uncaught ReferenceError: writeToFrontend is not defined
    at onload (test.html:8)
onload @ test.html:8

Uncaught SyntaxError: Cannot use import statement outside a module
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...