Я сталкиваюсь с ошибкой типографии при создании аутентификации с использованием jwt. < /p>
Нет перегрузки соответствует этому вызову.
перегрузка 1 из 5, '(Powerload: String | Object | Buffer, SecretorprivateKey: null, опции? Ошибка.
rgument of type 'String' не назначается параметру типа 'null'.
перегрузка 2 из 5, '(полезная нагрузка: строка | объект | буфер, секретаторпиватей: буфер | секрет | privatekeyinput | jsonwebkeyinput, опции? StringValue | Undefined '.
перегрузка 3 из 5,' (полезная нагрузка: строка | объект | буфер, SensectorPrivateKey: Buffer | Секрет | PrivateKeyInput | jsonWebKeyInput, обратный вызов: SignCallback): void ', дал следующую ошибку.
объект может указать только известные свойства, и «истекает», истекает' не существует в типе. /> Это мой код < /p>
const JWT_SECRET = process.env.JWT_SECRET;
const JWT_EXPIRES_IN = process.env.JWT_EXPIRES_IN || '1h';
if (!JWT_SECRET) {
throw new Error("FATAL ERROR: JWT_SECRET is not defined in environment variables.");
}
class AuthService {
private saltRounds = 10;
public async registerUser(userData: UserCreationData): Promise {
const { username, password } = userData;
// Check if user already exists
const existingUserResult: QueryResult = await pool.query(
'SELECT * FROM users WHERE username = $1',
[username]
);
if (existingUserResult.rows.length > 0) {
throw new Error('Username already exists.');
}
// Hash password
const hashedPassword = await bcrypt.hash(password, this.saltRounds);
// Insert new user
const query = `
INSERT INTO users (username, password)
VALUES ($1, $2)
RETURNING id, username, created_at; -- Return user data without password
`;
try {
const result: QueryResult = await pool.query(query, [username, hashedPassword]);
if (result.rows.length > 0) {
return result.rows[0];
} else {
throw new Error("User registration failed, no rows returned.");
}
} catch (error) {
console.error("Error registering user:", error);
throw new Error("Failed to register user in database.");
}
}
public async loginUser(userData: UserCreationData): Promise {
const { username, password } = userData;
// ... (database query and password check) ...
const query = 'SELECT * FROM users WHERE username = $1;';
const result: QueryResult = await pool.query(query, [username]);
if (result.rows.length === 0) {
throw new Error('Invalid username or password.');
}
const user = result.rows[0];
const isMatch = await bcrypt.compare(password, user.password);
if (!isMatch) {
throw new Error('Invalid username or password.');
}
const token = jwt.sign(
{userId: user.id, username: user.username},
JWT_SECRET as string,
{ expiresIn: JWT_EXPIRES_IN }
);
const { password: _, ...userWithoutPassword } = user;
return { token, user: userWithoutPassword };
}
}
export default AuthService;
Подробнее здесь: https://stackoverflow.com/questions/795 ... -this-call
Никакая перегрузка не соответствует этому вызову ⇐ Javascript
Форум по Javascript
-
Anonymous
1744276110
Anonymous
Я сталкиваюсь с ошибкой типографии при создании аутентификации с использованием jwt. < /p>
Нет перегрузки соответствует этому вызову.
перегрузка 1 из 5, '(Powerload: String | Object | Buffer, SecretorprivateKey: null, опции? Ошибка.
rgument of type 'String' не назначается параметру типа 'null'.
перегрузка 2 из 5, '(полезная нагрузка: строка | объект | буфер, секретаторпиватей: буфер | секрет | privatekeyinput | jsonwebkeyinput, опции? StringValue | Undefined '.
перегрузка 3 из 5,' (полезная нагрузка: строка | объект | буфер, SensectorPrivateKey: Buffer | Секрет | PrivateKeyInput | jsonWebKeyInput, обратный вызов: SignCallback): void ', дал следующую ошибку.
объект может указать только известные свойства, и «истекает», истекает' не существует в типе. /> Это мой код < /p>
const JWT_SECRET = process.env.JWT_SECRET;
const JWT_EXPIRES_IN = process.env.JWT_EXPIRES_IN || '1h';
if (!JWT_SECRET) {
throw new Error("FATAL ERROR: JWT_SECRET is not defined in environment variables.");
}
class AuthService {
private saltRounds = 10;
public async registerUser(userData: UserCreationData): Promise {
const { username, password } = userData;
// Check if user already exists
const existingUserResult: QueryResult = await pool.query(
'SELECT * FROM users WHERE username = $1',
[username]
);
if (existingUserResult.rows.length > 0) {
throw new Error('Username already exists.');
}
// Hash password
const hashedPassword = await bcrypt.hash(password, this.saltRounds);
// Insert new user
const query = `
INSERT INTO users (username, password)
VALUES ($1, $2)
RETURNING id, username, created_at; -- Return user data without password
`;
try {
const result: QueryResult = await pool.query(query, [username, hashedPassword]);
if (result.rows.length > 0) {
return result.rows[0];
} else {
throw new Error("User registration failed, no rows returned.");
}
} catch (error) {
console.error("Error registering user:", error);
throw new Error("Failed to register user in database.");
}
}
public async loginUser(userData: UserCreationData): Promise {
const { username, password } = userData;
// ... (database query and password check) ...
const query = 'SELECT * FROM users WHERE username = $1;';
const result: QueryResult = await pool.query(query, [username]);
if (result.rows.length === 0) {
throw new Error('Invalid username or password.');
}
const user = result.rows[0];
const isMatch = await bcrypt.compare(password, user.password);
if (!isMatch) {
throw new Error('Invalid username or password.');
}
const token = jwt.sign(
{userId: user.id, username: user.username},
JWT_SECRET as string,
{ expiresIn: JWT_EXPIRES_IN }
);
const { password: _, ...userWithoutPassword } = user;
return { token, user: userWithoutPassword };
}
}
export default AuthService;
Подробнее здесь: [url]https://stackoverflow.com/questions/79566203/no-overload-match-this-call[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия