У меня есть программа 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