新手入门,学习中。请教各位老师下面的代码错在哪里?

新手入门,学习中。请教各位老师下面的代码错在哪里?这是一个最简单的用户名密码验证程序,但是运行的时候没有返回任何信息?用VS code运行提示TypeError: Failed to fetch。但是实在是找不到错误在哪里?求老师指点一下,谢谢!
1、创建html文件,名字为test.html代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Login Form</title>
</head>
<body>
    <form id="loginForm">
        <label for="username">Username:</label>
        <input type="text" id="username" name="username" required>
        <br>
        <label for="password">Password:</label>
        <input type="password" id="password" name="password" required>
        <br>
        <button type="submit">Login</button>
    </form>
    <script src="app.js"></script>
</body>
</html>

第二步,创建APP.JS文件,内容如下

document.getElementById('loginForm').addEventListener('submit', function (event) {
    event.preventDefault();
    var username = document.getElementById('username').value;
   var password = document.getElementById('password').value;
    fetch('http://localhost:3000/login', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({ username: username, password: password })
    })
    .then(response => response.json())
    .then(data => {
        if (data.success) {
            alert('Login successful!');
        } else {
            alert('Invalid username or password');
        }
    });
});

第三步,创建nodejs后端服务器文件server.JS代码如下

// server.js
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
const users = {
    admin: '123456'
};
app.post('/login', (req, res) => {
    const { username, password } = req.body;
    if (users[username] && users[username] === password) {
        res.send({ success: true });
    } else {
        res.send({ success: false });
    }
});
app.listen(3000, () => {
    console.log('Server is running on port 3000');
});

然后运行node server.js保持服务器运行。
最后打开test.html文件,输入任意用户名和密码,点击提交,但是没有返回任何信息。

想知道错误在哪里,但是因为刚入门,不知道错误在哪里?

阅读 670
1 个回答

使用 cors 中间件,需要先安装

npm install cors
const cors = require('cors'); // 引入 cors 模块

// 使用 cors 中间件,允许所有来源(也可以自定义 origin)

app.use(cors({
  origin: '*',              // 允许所有域名请求(开发阶段)
  methods: ['GET', 'POST', 'OPTIONS'], // 允许的请求方法
  allowedHeaders: ['Content-Type']     // 允许的请求头
}));

如下修改:
image.png
测试可以的,如图
image.png

推荐问题