В данном случае нет необходимости в вызове конструктора, поскольку в самом компоненте, локальное состояние компонента this.state не используется. А значит и необходимости в вызове конструктора отсутствует. Пример с применением constuctor, и пример без него. (Примеры со страницы офф. доков раздел State and Lifecycle)
Применять if/else так-же как и везде. Если не проходит проверка, значит так оно и есть. Посмотри что вообще содержится в city. Может Moscow или moscow, или москва итд...
// не fs.join, а path.join
var filePath = path.join(__dirname, '../assets/somefile.txt');
// и про console.log.info у меня нода тоже не знает ничего
// зато знает про console.log или console.info
На заметку, индексы в качестве ключей нельзя использовать. И связано это с внутрянкой React. Запускаться код будет, но задачи своей ключи не выполнят. Вот здесь хорошо расказано (7-е видео) а в доках так вообще прямым текстом сказано.