#javascript #node.js #server #momentjs
#javascript #node.js #сервер #momentjs
Вопрос:
Впервые использую javascript и библиотеку Momentjs. У меня проблема с выводом, поскольку он не печатает то, что необходимо. Мне нужно вывести даты в формате «День, дата месяц год» (например, вторник, 14 мая 2018 года). Мне нужно использовать цикл для обхода пустого массива, dates
который затем выводит форматированную версию каждой даты в отдельной строке, и мне нужно сделать это в createServer
функции.
Я использую code sandbox и очень смущен тем, почему это не работает.
Я посмотрел на moment.js и другие форумы, но ни один из них не отвечает на мою проблему.
var http = require("http");
var moment = require("moment");
moment().format();
function getDates(start, end, dates) {
var start = moment.isDate(new Date("1st Jan 2019"));
var end = moment.isDate(new Date("31st December 2019"));
var dates = [];
var current = start.clone();
if (current !== moment.isoWeekday(1)) {
current = moment().add(1, "w");
}
while (current.isBefore(end)) {
current.clone.push(dates);
current = moment.add(2, "w");
}
return dates;
}
http
.createServer(function(req, res) {
res.writeHead(200, { "Content-Type": "text/plain" });
res.write("day,date", "n");
var dates = function getDates() {};
for (var i = 0; i < dates.length; i ) {
moment.res.write.format("dddd, Do MMMM YYYY", "n");
}
res.end();
})
.listen(8080);
Происходит то, что он отображается только day, date
на экране вывода. И мне нужны форматированные даты, которые я пытался создать из пустой переменной массива ‘dates’, которая определена в функции.
Ответ №1:
var dates = function getDates() {};
не вызывает getDates()
функцию. Это создает dates
имя новой функции, которая ничего не делает, аналогично записи
function dates() {
}
Измените это на:
var dates = getDates();
Другая неправильная строка:
moment.res.write.format("dddd, Do MMMM YYYY", "n");
Это должно быть:
res.write(moment.format("dddd, Do MMMM YYYYY", dates[i]), "n");
Вы не можете объединить res.write
и moment.format
в один вызов функции. И вам нужно отформатировать текущий элемент dates
массива.
Комментарии:
1. Я изменил это раньше, но затем после ничего не печатает. Code sandbox просто переходит прямо к ошибке: ‘502 bad gateway’.
2. Вы не используете
dates[i]
вfor
цикле.3. Эта строка не имеет смысла:
moment.res.write.format("dddd, Do MMMM YYYY", "n");
4. Спасибо, что указали на это, я думал, что сделал это правильно. Однако первоначальная проблема все еще существует. Как только я изменил первую строку, которую вы указали, на ‘var dates = getDates( );’ появилась та же ошибка, и ничего не распечатывалось
5. Я не очень много знаю о написании node.js серверы, поэтому могут быть проблемы с той частью, которую я не вижу.