В настоящее время я делаю интерфейс регистрации пользователя, используя javascript. Однако мне не удается установить sh сеанс повара ie.
После входа в локальную сеть появляется сообщение:> сайт недоступен. localhost отказывается подключаться.
Я переустановил пакет с сессией cook ie, но он все еще не работает
Есть ли способ заставить его работать?
вот сообщение об ошибке из терминала: (узел: 7978) UnhandledPromiseRejectionWarning: TypeError: Невозможно прочитать свойство 'id' из неопределенного в / Users / gabrielswee / Desktop / папки рабочего стола / курсы / Javascript / ecomm / index. js: 58: 29 (узел: 7978 ) UnhandledPromiseRejectionWarning: необработанное отклонение обещания. Эта ошибка возникла либо из-за того, что внутри asyn c -функции не было блока catch, либо из-за отклонения обещания, которое не было обработано с помощью .catch (). Чтобы завершить процесс узла при отклонении необработанного обещания, используйте флаг CLI --unhandled-rejections=strict
(см. https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (идентификатор отклонения: 1) (узел: 7978) [DEP0018] Предупреждение об устаревании: отклонения необработанного обещания устарели. В будущем отклонения обещаний, которые не обрабатываются, завершат процесс Node.js с ненулевым кодом выхода.
Вот мой синтаксис
index. js
const express = require("express");
const bodyParser = require("body-parser");
const cookieSession = require("cookie-session");
const usersRepo = require("./repository/users");
const app = express();
//NOTE: Middleware: To automatically body parse the data
app.use(bodyParser.urlencoded({
extended: true
}));
//NOTE: Middleware: Cookie Session
app.use(
cookieSession({
name: "session",
keys: ["lucky6226"]
})
);
//NOTE: User Sign Up
app.get("/", (req, res) => {
res.send(`
<div>
Your id is:${req.session.userId}
<form method ="POST">
<input name ="email" placeholder="email" />
<input name ="password" placeholder="password" />
<input name ="passwordConfirmation" placeholder="password confirmation" />
<button>Sign Up</button>
</form>
</div>
`);
});
//NOTE: Validating User Email and Password
app.post("/", async (req, res) => {
const {
email,
password,
passwordConfirmation
} = req.body;
const existingUser = await usersRepo.getOneBy({
email
});
if (existingUser) {
return res.send("Email in use");
}
if (password !== passwordConfirmation) {
return res.send("Password must match");
}
//NOTE: Create users in the user repository
const user = await usersRepo.create({
email,
password
});
//NOTE: Store ID in the cookie. Use 3rd party package for Cookies --> npm install cookie-session
req.session.userId = user.id; //Add by cookie session
res.send("Account Created !!!");
});
//NOTE: HTTP Request
app.listen(3000, () => {
console.log("Connection established successfully");
});
пользователь. js
const fs = require("fs");
const crypto = require("crypto");
class UsersRepository {
constructor(filename) {
if (!filename) {
throw new Error("Creating a repository requires a filename");
}
this.filename = filename;
try {
//NOTE: Check to see if the file exist
fs.accessSync(this.filename);
} catch (err) {
//NOTE: if file do not exists, create the file
fs.writeFileSync(this.filename, "[]");
}
}
async getAll() {
return JSON.parse(
await fs.promises.readFile(this.filename, {
encoding: "utf8"
})
);
}
async create(attrs) {
attrs.id = this.randomId();
const records = await this.getAll();
records.push(attrs);
await this.writeAll(records);
}
async writeAll(records) {
// NOTE: Write the updated 'records' array back to this.filename
await fs.promises.writeFile(
this.filename,
JSON.stringify(records, null, 2)
);
}
randomId() {
return crypto.randomBytes(4).toString("hex");
}
async getOne(id) {
const records = await this.getAll();
return records.find(record => record.id === id);
}
async delete(id) {
const records = await this.getAll();
//NOTE: Return true if ID is not the same
const filteredRecords = records.filter(record => record.id !== id);
await this.writeAll(filteredRecords);
}
async update(id, attrs) {
const records = await this.getAll();
const record = records.find(record => record.id === id);
if (!record) {
throw new Error(`Record with id ${id} is not found`);
}
//NOTE: Assign attrs {password} (attributes) into the record {email}
Object.assign(record, attrs);
//NOTE: Outcome --> record === {email: 'test@test.com', password: 'mypassword'}
await this.writeAll(records);
}
async getOneBy(filters) {
const records = await this.getAll();
//NOTE: outer for of loop --> looping through an array
for (let record of records) {
let found = true;
//NOTE: inner for in loop --> search an object
for (let key in filters) {
if (record[key] !== filters[key]) {
found = false;
}
}
if (found === true) {
return record;
}
}
}
//NOTE: File export
module.exports = new UsersRepository("users.json");