#javascript #node.js #logging #express
#javascript #node.js #ведение журнала #экспресс
Вопрос:
Нефритовый файл:
form(method="post", action="/upload", enctype="multipart/form-data")
input(type="file", name="logName")
input#promptNumErrors(type="number", name="numErr", placeholder="Number of Errors")
button(type="submit") Upload
Index.js:
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function (req, res) {
res.render('fileUpload', { title: 'Log File Viewer'});
});
var formidable = require('formidable'),
fs = require('fs'),
util = require('util'); //Used to print out everything about the log file
/* POST the file upload */
router.post('/upload', function (req, res) {
var form = new formidable.IncomingForm();
form.parse(req, function (err, fields, files) {
fs.readFile(files.logName.path, function (err, data) {
if (err) throw err;
// TODO: Getting form value
var numError = req.body.numErr;
console.log(numError);
var reDiaBtoa = /^([[^]]*]) (w ?) ([[^]]*]) (([^)]*)) (.*)$/gm;
var outputToDisplay = " ";
// Check to see if regex string works
if (reDiaBtoa.test(data)) {
var array = data.toString().split('n');
for (l in array) {
var logArray = (array[l]);
}
// Use numPrompt to retrieve user input for numErr
var numPrompt = 10;
// Reverse the array so the most recent errors will show
var newArray = array.reverse();
var match;
//Count the number of errors in the log file
var countErrors=0;
var numCount = (countErrors-numPrompt);
for (var j = -1; j <= newArray.length; j ) { // Since newArray[0] contains an empty string
while ((match = reDiaBtoa.exec(newArray[j])) != null) {
if (match.index === reDiaBtoa.lastIndex) {
reDiaBtoa.lastIndex ;
}
if (match[2] === "ERROR") {
countErrors ;
res.write('<p>' "Time " match[1] '<br/>');
res.write("Thread Name: " match[3] '<br/>');
res.write("Source name amp; line number: " match[4] '<br/>');
res.write("Log Message: " match[5] '<br/>');
res.write('--------------------------------------' '</p>');
}
}
}
console.log(countErrors);
}
})
});
});
Он продолжает говорить, что NumError не определено всякий раз, когда я запускаю программу. Я могу прочитать ввод файла, но не ввод числа. Есть идеи?
ОБНОВЛЕНИЕ: это полная index.js досье.
Комментарии:
1. Что ж, похоже, вы используете express.js , но какую версию вы используете? Если вы используете 4, то убедитесь, что вы правильно настроили промежуточное программное обеспечение body-parser. Нужно немного больше информации, чтобы дать вам окончательный ответ.
2. Для отладки этого я бы проверил переменную req.body и заглянул в HTML, который генерирует Jade, возможно, что-то не так с вашим шаблоном.
3. Я использую последнюю версию, поэтому 4 я считаю. Но для некоторого контекста я пытаюсь загрузить файл журнала, а затем проанализировать ошибки. Предполагается, что ввод числа извлекает введенный пользователем номер, а затем отображает некоторые данные … Однако я даже не могу показать его значение после нажатия кнопки загрузки с помощью консоли. инструкция журнала.
4. Если вы разместите свой полный index.js , я должен быть в состоянии воспроизвести проблему и дать ответ.
5. Я опубликовал полный index.js @Крислако