не применяются стили к ejs странице ошибка в консоле:
в консоле браузера
sign_in:1 Refused to apply style from 'http://localhost:3000/desing/sign_in.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.
в разделе Network Request URL: http://localhost:3000/desing/sign_in.css Request Method: GET Status Code: 404 Not Found Referrer Policy: strict-origin-when-cross-origin
Расположение файлов:
Network>
public>
desing>
sign_in.css
site>
server>
server.js
str>
sign_in.ejs
код server.js
const ejs = require("ejs")
const express = require('express')
const session = require('express-session')
const bc = require('bcrypt')
const app = express()
const sql = require('sqlite3')
const crypto = require('crypto')
const parser = require('body-parser');
const path = require("path")
const { log } = require("console")
app.use(express.static('public', {extensions: ['css'],
setHeaders: (res, path) => {
if (path.endsWith('.css')){
res.setHeader('Content-Type', 'text/css');
}
}
}));
const db = new sql.Database('./auth/auth.qlite3', (err)=>{
if (err){
console.log('Errpor' + err)
}else{
console.log('Databes Connected!')
return;
}
}
)
db.run(`CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
login TEXT UNIQUE NOT NULL,
password TEXT NOT NULL)`)
app.use(parser.urlencoded({extended: false}))
app.use(parser.json())
//register
app.post('/sign_up', (req, res)=>{
let login_u = req.body.login_u;
let password_u = req.body.password_u;
bc.genSalt(10, (err, salt) => {
if (err){
console.log('Ошибка:' + err)
return;
}
bc.hash(password_u, salt, (err, hash) => {
if (err){
console.log('Ошибка при Hash' + err.message)
return;
}
db.get(`SELECT * FROM users WHERE login=?`, [login_u],(err, row)=>{
if (err){
console.log('Error:' + err)
res.status(500).json({error:'Ошибка при получении данных!'})
return;
}
if(row){
res.status(400).json({error:`Пользователь с логином ${login_u} - уже существует!`})
console.log(`Пользователь с логином ${login_u} - уже существует!`)
}
})
db.run(`INSERT INTO users (login, password) VALUES (?, ?)`, [login_u, hash],
(err)=> {
if (err){
console.log('Ошибка:' + err)
res.status(500, 'Ошибка при добавлении пользователя')
return;
}
res.send(`User ${login_u} is add`)
}
)
})
})
})
app.use(session({
secret: crypto.randomBytes(32).toString('hex'),
resave: false,
saveUninitialized: false,
cookie:{maxAge: 1000 * 60 * 60 * 24}
}))
app.post('/sign_in', (req, res) => {
const login = req.body.login;
const password = req.body.password;
console.log(login)
console.log(password)
db.get(`SELECT * FROM users WHERE login = ?`, [login], (err, row) => {
if (err) {
console.error(err);
res.status(500).send('Ошибка при получении данных');
return;
}
if (row) {
// Сравниваем пароли
bc.compare(password, row.password, (err, match) => {
if (err) {
console.log('Ошибка при проверке пароля:', err);
res.status(500).send('Ошибка при проверке пароля');
return;
}
// Проверяем результат сравнения
if (match) {
req.session.loggedIn = true;
req.session.userId = row.id;
req.session.username = row.login;
res.status(200).send('Авторизация прошла успешно!');
} else {
res.status(400).send('Неверный пароль!');
}
});
} else {
res.status(404).send('Пользователь не найден');
}
});
});
app.get('/profile', (req, res)=>{
if (req.session.loggedIn) {
res.send('Авторизован!')
console.log('+')
}else{
res.redirect('/sign_in')
}
})
app.set('view engine', 'ejs')
app.set('views', __dirname)
app.get('/sign_up', (req, res) => {
res.render('./str/sign_up.ejs')
})
app.get('/logout', (req, res)=>{
req.session.destroy((err) =>{
if (err){
console.error('Ошибка при уничтожении сессии' + err);
res.status(500).send('Ошибка при уничтожении сессии')
return;
}
res.redirect('/sign_in')
})
})
app.get('/sign_in', (req, res) => {
res.render('./str/sign_in.ejs')
})
app.listen(3000, ()=>{
console.log('Сервер работает!')
})
код sign_in.ejs
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Sign in</title>
<link rel="stylesheet" href="/desing/sign_in.css">
</head>
<body>
<header>
<div class="txt1_net">Network</div>
<div class="txt2_net">Welcome to Network</div>
<div class="txt3_sign_up">создать акаунт</div>
</header>
<header>
<input class="int1_log" id="int1_log" type="text" placeholder="Login" min="3">
<input class="int2_pass" type="password" placeholder="password" min="5">
</header>
<header>
<a class="lnk1_pass">Забыл пароль?</a>
<a class="lnk2_sign_up">sign up</a>
<button class="btn1_sign_in" id="btn1_sign_in">sign in</button>
</header>
<script>
document.querySelector('.btn1_sign_in').addEventListener('click', function(){
let login = document.querySelector('.int1_log').value;
let password = document.querySelector('.int2_pass').value;
login = encodeURIComponent(login)
password = encodeURIComponent(password)
fetch('/sign_in', {
method : 'POST',
headers : {
'Content-Type':'application/x-www-form-urlencoded'
},
body : new URLSearchParams({login, password}).toString()
}) // Добавлены скобки после body
.then(response => {
if (response.ok){
console.log(`Проверка...`)
}else {
response.text().then(text =>{
console.error(`Ошибка при проверке:${text}`);
throw new Error(text);
})
}
})
.catch(error =>{
console.log('Ошибка при отправке запроса:', error)
console.status(500, error)
});
});
</script>
</body>
</html>