Я работаю над небольшим проектом, в котором Base64 кодирует строку, а затем хеширует ее.
Я использую Nodejs для размещения сервера:
#!/usr/bin/env nodejs
var http = require('http');
var fs = require('fs');
function onRequest(request, response){
response.writeHead(200,{'Content-Type': 'text/html'});
fs.readFile('./index.html',null, function(error, data){
if (error) {
response.writeHead(404);
response.write('file not found');
} else {
response.write(data);
}
response.end();
});
}
http.createServer(onRequest).listen(8000);
console.log('server is running!');
На странице HTMLЯ создал таблицу, в которой левая ячейка будет закодированными данными, а правая будет хеш-значением.
<div class="container">
<table id="table" class="table">
<thead>
<tr>
<th>Encode</th>
<th>Encrypt</th>
</tr>
</thead>
</table>
</div>
Для генерации значений я использую следующее:
<button onclick="addData()">Add a Row</button>
На этот скрипт ссылаются в верхней части HTML.
Наконец, вот JS, заполняющий ячейки при нажатии кнопки:
function addData(){
var table = document.getElementById("table");
var row = table.insertRow(1); //which number row the data is added from. row 0 is for the titles.
var cell1 = row.insertCell(0); //left cells
var cell2 = row.insertCell(1); //right cells
cell1.innerHTML = encode("value");
cell2.innerHTML = encrypt("value");
}
Если яудалите encode
и encrypt
и просто укажите значение, это работает.Но когда я представляю две свои функции для кодирования, а затем шифрования, HTML-код распечатывает всю функцию.
Функции:
function encode(string) {
let buff = new Buffer(string);
let base64data = buff.toString('base64');
return base64data;
}
function encrypt(string) {
let crypto = require('crypto');
let hash = crypto.createHash('sha512').update(string).digest('base64');
return hash;
}
Я получаю ошибку:
ReferenceError: Buffer is not defined[Learn More]
Итак, мой вопрос: почему я не могу использовать свои функции, использующие модули nodeJS?