Объект на стороне сервера, расположенный в app.js, помечен как не экспортированный в моем файле index.ejs - PullRequest
0 голосов
/ 30 мая 2019

У меня проблема со ссылкой на объект, который находится в моем файле app.js. Я работаю на моем сервере с помощью экспресс, и для двигателя представления я использую EJS.
Объект создается в файле app.js, а затем используется в моем файле PowerList.ejs (индексный файл). Но при попытке его использовать он помечается как не экспортируемый.

объект и функция в app.js:

var number = {count: 0};
var profile = {name: 'My name', age: 21, job: 'My profession', hobbies: ['hiking', 'running', 'coding']};
app.get('/', function (req, res) {
    res.render('PowerList.ejs',{data: profile, number: number}); 
});

объектов, используемых в PowerList.ejs:

<section id="history" style="background-color: red; margin: auto; height: 400px; width: 650px; text-align: center; display: none">
    <button id="button">click me</button>
    <p>You have clicked me <%= number.count%> times</p>
</section>

Что меня смущает, так это то, что, как вы можете видеть из фрагмента, есть еще один объект с именем profile, который аналогичным образом используется в моем файле PowerList.ejs и не вызывает никаких проблем.

использование объекта профиля:

<section id="productivity" style="background-color: bisque; margin: auto; height: 400px; width: 650px; text-align: center; display: none">
    <p><strong>Profile name: </strong> <%= profile.name%></p>
    <p><strong>Age: </strong><%= profile.age%></p>
    <p><strong>Job: </strong><%= profile.job%></p>
    <ul><strong>hobbies:</strong>
        <% profile.hobbies.forEach(function (value) {  %>
            <li><%= value %></li>
        <%});%>
    </ul>
</section>

Я также использую числовой объект в javascript-файле, где он увеличивается с помощью нажатия кнопки. Здесь он также помечен как не экспортируемый, плюс я получаю сообщение об ошибке при попытке увеличить его, нажав кнопку.

файл JavaScript:

document.getElementById('button').addEventListener('click', loadNumber);

function loadNumber() {
    var xhttp = new XMLHttpRequest();
    xhttp.open('GET', '/', true);
    xhttp.onload = function () {
        if(this.status === 200){
            number.count++;
        }
    };
    xhttp.send();
}

журнал ошибок:

Uncaught ReferenceError: number is not defined
    at XMLHttpRequest.xhttp.onload (addDelete.js:67)

1 Ответ

2 голосов
/ 30 мая 2019

Ваша ошибка:

var number = {count: 0};
var profile = {name: 'My name', age: 21, job: 'My profession', hobbies: ['hiking', 'running', 'coding']};
app.get('/', function (req, res) {
    res.render('PowerList.ejs',{data: profile, number: 
                                               ^^^^^^^^
});

У вас есть два метода решения этой проблемы или обычный:

number: number

или вы просто удалите ":", и это должно быть хорошо:)

...