Передача результата работы функции в другую функцию внутри модуля NodeJS

84
02 июля 2021, 00:10

Итак, есть вот такой код:

module.exports.apiKey = () => { 
  let apiKey = 'b078a7d81849e7d2b796924e54583a40'; 
  return apiKey; 
} 
 
module.exports.yourCity = () => { 
  let yourCity = 'dnipro'; 
  return yourCity; 
} 
 
module.exports.yourUrl = () => { 
  let url = `http://api.openweathermap.org/data/2.5/weather?q=${yourCity()}&appid=${apiKey()}`; 
  return url; 
}
Эти переменные я экспортирую в другой файл где они используются другой функцией. Однако вся эта конструкция не работает, так как результат yourCity() и apiKey() равны undefined.

В основном файле я их вызываю вот так:

const config = require('./config.js'); 
const request = require('request'); 
config.apiKey(); 
config.yourCity(); 
config.yourUrl(); 
 
request(url, (err, response, body) => { 
  if(err){ 
    console.log('Upss, something wrong!:', err); 
  } else { 
    console.log('Actual weather parameters:', body); 
  } 
});

Подскажите пожалуйста, что я делаю не так?

Answer 1

2 момента.

1) конечно же в переменной url у вас будет undefined. от того что выше вы просто вызвали функцию config.yourUrl(), результат ее работы никуда не сохранился. надо вот так

request(config.yourUrl(), (err, response, body) => {

ну или

let url = config.yourUrl();
request(url, (err, response, body) => {

2) если просто вызвать config.yourUrl(), то она упадет с ошибкой, т.к. в текущем контексте не определены функции yourCity и apiKey.
можно попробовать так

const apiKey = config.apiKey();
const yourCity = config.yourCity();
const url = config.yourUrl();

или переписать функцию yourUrl так чтобы она принимала параметры

const url = config.yourUrl(config.apiKey(), config.yourUrl());
READ ALSO
Не работает setState

Не работает setState

Изучаю Reactjs

341
Изучаю JavaScript, возник вопрос [закрыт]

Изучаю JavaScript, возник вопрос [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

95
Яндекс карты. Как получить равномерно распределенные точки по региону?

Яндекс карты. Как получить равномерно распределенные точки по региону?

У меня есть координаты границы региона Москвы, и мне необходимо равномерно распределить точки по этому и региону и узнать их координатыЕсть...

101
Как выровнять по центру баннер?

Как выровнять по центру баннер?

Как сделать чтобы баннер выравнивался по центру, а не с левой стороныИспользую CMS Xenforo 2

113