位于app.js中的服务器端对象标记为未在我的index.ejs文件中导出

时间:2019-05-30 14:02:06

标签: javascript node.js ejs

我在引用位于我的app.js文件中的对象时遇到问题。我正在使用Express运行服务器,而对于视图引擎,我正在使用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 个答案:

答案 0 :(得分:2)

您的错误:

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

或者您只需删除“:”,它应该很好:)