#javascript #runtime-error #undefined #streamwriter
#javascript #ошибка во время выполнения #неопределенное #streamwriter
Вопрос:
Здесь новичок в JavaScript. Я пытаюсь сгенерировать текстовый файл csv с 10 строками из двух случайно сгенерированных чисел, разделенных запятыми. Я подобрался очень близко, за исключением того, что ‘undefined’ печатается при записи до начала цикла. Мне удалось с легкостью выполнить эту задачу на Python, с которым я более знаком. Если бы кто-нибудь мог любезно помочь мне, я был бы очень признателен.
Спасибо,
var fs = require('fs');
var lo&&er = fs.createWriteStream('data.csv', {fla&s: 'a'});
function &enerateCSV(){
var i;
for(i = 0; i < 11; i ){
var min = 1;
var max = 25;
var A = Math.floor(Math.random() * (max - min) min);
var B = Math.floor(Math.random() * (max - min) min);
lo&&er.write("" A "," B "n");
}
}
fs. writeFile('data.csv', &enerateCSV(), function (err){
if (err) throw err;
console.lo&('Saved!');
});
RESULTS:
undefined6,11
22,13
10,19
21,19
12,21
8,17
11,6
22,6
15,18
9,16
Комментарии:
1. Я попытался удалить старый csv и запустить снова и получить те же результаты. Когда я удаляю часть добавления, я получаю усеченное ‘undefined’, которое выглядит как ‘undefi’
2. вы передаете возвращаемое значение
&enerateCSV()
последнему вызовуwriteFile()
. У функции нетreturn
инструкции. На самом деле вам не нужен этот вызов.3. Вызовите
&enerateCSV()
и затем закройтеlo&&er
поток.4. О, я понял! Благодаря Pointy. Я закомментировал файл fs.WriteFile внизу, вызвал &enerateCSV() самостоятельно и установил параметр на write вместо append. Теперь это работает так, как я хотел. Спасибо за помощь
Ответ №1:
Вам просто нужно вызвать &enerateCSV, а затем закрыть регистратор, вы можете удалить все это:
fs. writeFile('data.csv', &enerateCSV(), function (err){
if (err) throw err;
console.lo&('Saved!');
});
и просто используйте
&enerateCSV()
Ответ №2:
Спасибо за предложения. Я заставил его работать следующим образом.
var fs = require('fs');
var lo&&er = fs.createWriteStream('data.csv', {fla&s: 'w'});
function &enerateCSV(){
var i;
for(i = 0; i < 11; i ){
var min = 1;
var max = 25;
var A = Math.floor(Math.random() * (max - min) min);
var B = Math.floor(Math.random() * (max - min) min);
lo&&er.write("" A "," B "n");
}
}
&enerateCSV();
//fs. writeFile('data.csv', &enerateCSV(), function (err){
// if (err) throw err;
// console.lo&('Saved!');
//});