正在尝试创建多用户会话(想想谷歌文档)但是由于某种原因我的服务器文件没有做任何事情,我已经确保我的fetch函数是正确的,但什么也没有改变。甚至console.log从服务器文件命令没有显示。我不知道我错过了什么。我也使用了随机链接生成器函数,但我不认为这是相关的,因为链接生成正确,不过我还是会把它包含在我的代码中。
Server.js
const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');
const fs = require('fs');
const app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(cors());
app.post('/api/session', (req, res) => {
const name = req.body.name;
const sessionLink = req.body.sessionLink;
// Create a data object to store the name and session link
const data = {
name,
sessionLink,
};
// Write the data to a file
fs.writeFile('data.json', JSON.stringify(data), (err) => {
if (err) {
console.error(err);
res.status(500).send('Error writing to file');
} else {
res.send('Success');
}
});
});
app.listen(3000, (error) => {
if (error) {
console.log('Error starting server:', error);
} else {
console.log('Server is listening on port 3000');
}
});
mainpage.js
const generateSessionLink = () => {
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
let result = '';
for (let i = 0; i < 8; i++) {
result += characters.charAt(Math.floor(Math.random() * characters.length));
}
return 'https://mywebsite.io/session/' + result;
};
const handleNameChange = (event) => {
setName(event.target.value);
};
const handleSessionLinkChange = (event) => {
setSessionLink(event.target.value);
};
const handleEnterSession = () => {
if (name.trim() === '') {
alert('Please enter your name or nickname.');
return;
}
if (sessionLink.trim() === '') {
alert('Please enter a session link or join an existing one.');
return;
}
// Make a POST request to the session endpoint
fetch('/api/session', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
name,
sessionLink
})
})
.then(response => {
if (response.ok) {
// Store the name and session link in local storage
localStorage.setItem('name', name);
localStorage.setItem('sessionLink', sessionLink);
// Redirect to the app page
window.location.href = "/app";
} else {
throw new Error('Network response was not ok');
}
})
.catch(error => {
console.error('Error:', error);
alert('An error occurred while trying to join the session. Please try again later.');
});
};
1条答案
按热度按时间x4shl7ld1#
我试过你的代码,你唯一做错的是获取URL,因为节点服务器没有运行在与你的页面相同的端口/主机上。如果这仍然不能解决你的问题,那么你必须检查浏览器控制台,那里可能有更多的信息。