This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Проблема mp is not definded

Статус
В этой теме нельзя размещать новые ответы.

Lertex

Участник портала
27 Июл 2024
38
2
20
Возникает ошибка, помогите пожалуйста

ReferenceError: mp is not defined
at registerAttempt (script.js:111:5)

Script.js
JavaScript:
//document.addEventListener('DOMContentLoaded', () => {
//         music(true);
//});

//function music() {
//     if (toggle === true) {
//        let randomNumber = Math.floor(Math.random() * 5) + 1;
//        let sound = new Audio(`./img/track${randomNumber}.mp3`);
//        sound.volume = 0.15;
//       console.log(randomNumber)
//
//        // Play the audio after a user action (e.g., button click)
//       sound.play()
//            .then(() => {
//                 console.log('Audio playback started successfully.');
//            })
//            .catch(error => {
//                 console.error('Error starting audio playback:', error.message);
//            });
//      }
// }

function showRegister(){
    resetError();
    document.getElementById('login').style.display = 'none';
    document.getElementById('register').style.display = 'block';
    // document.getElementById('log-password-server').style.display = 'block';
}


function showLogin(){
    resetError();
    document.getElementById('login').style.display = 'block';
    document.getElementById('register').style.display = 'none';
}
function showHelp() {
    document.getElementById('login').style.display = 'none';
    document.getElementById('register').style.display = 'none';
    document.getElementById('help').style.display = 'block';
}
function loginAttempt(){
    const login = document.getElementById('log-login').value;
    const password = document.getElementById('log-password').value;
    // const passwordServer = document.getElementById('log-password-server').value; // добавлено получение пароля от сервера
    resetError();

    if(!login || login.length < 3){
        return showError('Введите Логин');
    }
    if(!login || login.length > 15) {
        return showError('Логин слишком длинный');
    }

    if(!password || password.length < 6){
        return showError('Введите Пароль');
    }  
    if(!password || password.length < 6){
        return showError('Введите Пароль');
    }
    if (/^[а-яА-Я]+$/.test(password)) {
        return showError('Пароль не должен содержать русские символы');
    }
    //  if(passwordServer !== 'qHSoe333JdyakfuSSHd') { // проверка на пароль от сервера
    //       return showError('Неверный пароль от сервера');
    //  }
    /*eslint-disable */
    mp.trigger('loginAttempt', JSON.stringify({login, password}) );
}
function entEmail() {
    resetError();
    const email = document.getElementById('email').value;
    if(email.length <= 5) {
        return showError('Введите корректную почту');
    } else {
        mp.trigger('emailAttempt', email)
    }
}
function registerAttempt(){
    const login = document.getElementById('reg-login').value;
    const password = document.getElementById('reg-password').value;
    const passwordConfirm = document.getElementById('reg-password-confirm').value;
    // const passwordServer = document.getElementById('log-password-server').value;
    const email = document.getElementById('log-password-email').value;
    resetError();
    if(!login || login.length < 3){
        return showError('Введите логин имеющий длину более 3-х символов.');
    }
    if(!email || email.length < 5){
        return showError('Введите корректную почту.');
    }
    if(!password || password.length < 6){
        return showError('Введите Пароль');
    }

    if(password != passwordConfirm){
        return showError('Пароли не совпадают');
    }
    if (/^[а-яА-Я]+$/.test(password)) {
        return showError('Пароль не должен содержать русские символы');
    }
    if (/^[а-яА-Я]+$/.test(login)) {
        return showError('Логин не должен содержать русские символы');
    }
    if (/\s/.test(login)) {
        return showError('Логин не должен содержать пробелы');
    }
    // if(passwordServer !== 'qHSoe333JdyakfuSSHd') { // проверка на пароль от сервера
    //     return showError('Неверный пароль от сервера');
    // }
    /*eslint-disable */
    mp.trigger('registerAttempt', JSON.stringify({login, password, email}) );
}
function showChange() {
    const change = document.getElementById('change');
    document.getElementById('login').style.display = 'none';
    change.style.display = 'block'
}
function showError(message){
    const errorBlock = document.getElementById('error');
    errorBlock.innerText = message;
    errorBlock.style.display = 'block';
}

function resetError(){
    const errorBlock = document.getElementById('error');
    errorBlock.innerText = 'message';
    errorBlock.style.display = 'none';
}
// function showPas() {
//     document.getElementById('log-password-server').style.display = 'none';
// }
function fillLogin(setLogin) {
    input = document.getElementById('log-login');
    input.value = setLogin
}
document.addEventListener("keydown", (e) => {
    switch (e.key) {

      case "Enter":
        const login = document.getElementById('log-login').value;
        const password = document.getElementById('log-password').value;
        // const passwordServer = document.getElementById('log-password-server').value; // добавлено получение пароля от сервера
        resetError();
   
        if(!login || login.length < 3){
            return showError('Введите Логин');
        }
        if(!login || login.length > 15) {
            return showError('Логин слишком длинный');
        }
   
        if(!password || password.length < 6){
            return showError('Введите Пароль');
        }  
        if (/^[а-яА-Я]+$/.test(password)) {
            return showError('Пароль не должен содержать русские символы');
        }
        if (/^[а-яА-Я]+$/.test(login)) {
            return showError('Логин не должен содержать русские символы');
        }
        // if(passwordServer !== 'qHSoe333JdyakfuSSHd') { // проверка на пароль от сервера
        //     // return showError('Неверный пароль от сервера');
        // }
   
        mp.trigger('loginAttempt', JSON.stringify({login, password}) );
        break;
    }
  });

Серверная часть
JavaScript:
const mysql = require('mysql');
const bcrypt = require('bcrypt');
const saltRounds = 10;
let DB = false;


mp.events.add('packagesLoaded', () => {
   DB = mysql.createConnection({host: 'localhost', user: 'mysql', password: 'mysql', database: 'rage-test'});
   DB.connect(function(err){
       if(err) return console.log('Ошиюка подключения: ' + err.stack);
       console.log('Успешное подключение к базе данных');
   });
});

mp.events.add('playerReady', player => {
    player.call('showLoginDialog');
});

mp.events.add('onLoginAttempt', (player, data) => {
   data = JSON.parse(data);

   DB.query('SELECT * FROM accounts WHERE login = ? LIMIT 1', [data.login], function (err, results){
      if( results.length == 0) return player.call('showAuthError', ['Неверный Логин и/или Пароль']);

      const dbPassword = results[0].password;
       bcrypt.compare(data.password, dbPassword).then(function(isMatched) {
           if(isMatched) player.call('hideLoginDialog');
           player.call('showAuthError', ['Неверный Логин и/или Пароль']);
       });

   });
});

mp.events.add('onRegisterAttempt', (player, data) => {
    data = JSON.parse(data);

    DB.query('SELECT id FROM accounts WHERE login = ?', [data.login], function(err, results){
        if( results.length > 0) return player.call('showAuthError', ['Аккаунт с таким Логином уже существует']);

        bcrypt.hash(data.password, saltRounds, function(err, passwordHash) {
            DB.query('INSERT INTO accounts SET login = ?, password = ?', [data.login, passwordHash], function(err, results){
                player.call('hideLoginDialog');
            });
        });

    })
});
 

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
1,767
1,305
5
Ошибка "ReferenceError: mp is not defined" возникает потому что в вашем скрипте не определен объект mp, через который вы пытаетесь вызывать функции mp.trigger. Для того чтобы mp был доступен в вашем скрипте, необходимо предварительно подключить клиентскую часть скрипта к серверу, где он будет корректно определен. Пожалуйста, убедитесь, что объект mp доступен в месте, где вы вызываете функции mp.trigger или проинициализируйте его согласно вашей среде выполнения.
 

Swayze

Начинающий специалист
6 Окт 2022
66
16
45
Вот такую структуру попробуй использовать

Код:
if (window && window.mp) {
 mp.trigger('loginAttempt', JSON.stringify({login, password}) );
}
 

kiraz

Специалист
17 Апр 2023
408
137
83
попробуй window.mp
 

furcasa

Участник портала
24 Июл 2024
37
3
10
я короче решил ошибку) , с бекапа файл заменил просто, блага я в нем не так много изменений делал
 
Статус
В этой теме нельзя размещать новые ответы.