Переменная EJS всегда возвращает ноль в коде Javascript

#javascript #node.js #ejs

#javascript #node.js #ejs

Вопрос:

У меня есть файл .EJS, и в нем записан следующий код:

 <% var sensor_data=0 %>

<%   var client = mqtt.connect('mqtt://io.adafruit.com',
{
    username: "**********",
    password: "**********",
}
) 

client.on("connect",function(){
    console.log("connected");
}
)


var topic = `${client.options.username}/f/sensor`;

client.subscribe(topic, function(err){

    if(!err)
    console.log("subscribed");
});


client.on("message",function(topic,message){

    var sensor_msg = message.toString();
    sensor_data = parseInt(sensor_msg, 10)
    console.log(sensor_data);   //printing correct value
   
});

%>



<script>

function updateGauges()
{
    gauge1.value = <%= sensor_data %>; //something is wrong here
    console.log(<%= sensor_data %>);
}



gauge1 = new RadialGauge({ renderTo: 'gauge1',
    width: 250,
    height: 250,
    units: '[units]', 
    title: "Sensor 1",
}).draw();



setInterval(updateGauges, 500);

</script>

  

Я пытаюсь присвоить значение переменной sensor_data(переменной EJS) переменной gauge1.value (переменной JS) в функции updateGauges(), но она всегда присваивает и выводит ноль. Однако оператор console.log(sensor_data) в функции приема сообщений выводит правильное значение.

Я пробовал:

  1. JSON.stringify
  2. <%= sensor_data %>

но она по-прежнему не печатает и не присваивает правильное значение в разделе скрипта.

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

1. «<%» и «%>» можете ли вы объяснить, что это такое? Я никогда не видел этот корпус backet?

2. Разве они не используются для написания кода EJS?

3. @user12326 Каково значение переменной message до ее преобразования в строку?