我在引用位于我的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)
答案 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
或者您只需删除“:”,它应该很好:)