NodeJS HTML:'要求'未定义

时间:2017-06-21 01:19:05

标签: javascript html node.js web terminal

我一直在研究NodeJS登录/注册脚本(称为LoginRegister.js),它似乎在终端中正常工作。我还安装了NodeJS和bcrypt模块。这是文件:

// Initialization
var fs = require("fs");
var bcrypt = require("bcrypt");
var LUinputID = $("#LUsernameIn").value;
var LPinputID = $("#LPasswordIn").value;
var RUinputID = $("#RUsernameIn").value;
var RPinputID = $("#RPasswordIn").value;

var UserStorageTextFile = "Users.txt";

$(document).ready(function(){
    console.log("Hello");
    var RButton = $("rBTN").addEventListener("click", registerUser(UserStorageTextFile, RUinputID, RPinputID));
    var LButton = $("#lBTN").addEventListener("click", registerUser(UserStorageTextFile, LUinputID, LPinputID));
});

// Defining Functions
function encrypt(passwordFromUser) {
    var salt = bcrypt.genSaltSync(10);
    var hash = bcrypt.hashSync(passwordFromUser, salt);
    return hash;
}

function passCheck(passwordFromUser, passHashed){
    return bcrypt.compareSync(passwordFromUser,passHashed);
}

function loginUser(usersTextFile, username, password){
    data = fs.readFileSync(usersTextFile).toString();

    if(data.indexOf(username) != -1){
        console.log(data.indexOf(username));
        for (var i = 0; i <= data.indexOf(username); i++) {
            if (i == data.indexOf(username)) {
                i += (username.length + 1);
                passcode = data.slice(i, i+60);

                if (passCheck(password, passcode)) {
                    console.log("Yes!!");
                }
                else{
                    console.log("No!!");
                }
            }
        }
    }
    else{
        console.log("No!!");
    }
}

function registerUser(usersTextFile, username, password) {
    data = fs.readFileSync(usersTextFile);
    saveData = data + username + "-" + encrypt(password) + "\n";

    fs.writeFile('Users.txt', saveData, (err2) => {
        console.log("User " + username + " Registered!");
    });
}

我想在浏览器中测试它,所以我把一个html文件放在一起显示我的JS实际操作:

<!DOCTYPE html>
<html>
<head>
    <title>Authentication Test</title>
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script type="text/javascript" src="LoginRegister.js"></script>
</head>

<h2>Login</h2>
<input type="text" id="RUsernameIn">
<input type="password" id="RPasswordIn">
<button id="lBTN">Login</button>

<h2>Register</h2>
<input type="text" id="LUsernameIn">
<input type="password" id="LPasswordIn">
<button id="rBTN">Register</button>

</html>

我在Microsoft Edge中打开了HTML文件,并在将详细信息放入框中后尝试按下注册按钮,但我检查了Users.txt文件并且没有发生任何事情。看完F12开发者工具后,我注意到在启动时,控制台声明:

SCRIPT5009: 'require' is undefined
LoginRegister.js (2,1)

1 个答案:

答案 0 :(得分:0)

Node.JS是服务器端技术,而不是浏览器技术。因此,特定于节点的调用(如require())在浏览器中不起作用。

如果您希望从Node提供特定于浏览器的模块,请参阅browserifywebpack

查看更多:require is not defined? node.js 感谢Rob Raisch。