【发布时间】:2017-11-23 17:23:40
【问题描述】:
我一直在编写一个 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)
【问题讨论】:
-
require()是 node.js 中的服务器端函数。您显示的代码在浏览器中运行,而不是在 node.js 中。看来您可能对浏览器和 node.js 如何协同工作感到困惑。 node.js 用作您的 Web 服务器。浏览器从 Web 服务器请求一个特定的 URL。您的 node.js 代码接收该请求,然后使用您想要在 node.js 中使用的任何代码,为该 URL 创建所需的 HTML 页面,然后将其作为对浏览器请求的响应发送回。然后浏览器解析 HTML 并显示页面。该页面中的所有脚本都在浏览器中运行。 -
你对市长有误解。 Node 是一个服务器端的 JS 运行时。它不会在浏览器中运行。两者都是在 javascript 中的 Witten,不同的运行时环境。要在浏览器环境中使用节点代码和节点语法,请检查 webpack。
-
谢谢,我也想问一下为什么当我运行这个时,控制台日志: SCRIPT1004: Expected ';'登录注册(19, 7)
标签: javascript html node.js web terminal