80824


### 前提・実現したいこと

以下のコードで22行目の console.log(getData());
から11行目のdataを出力したいと思っていますが、以下のようにエラーメッセージが出ます。

改善方法を教えていただけると幸いです。  
よろしくお願い致します。

### 発生している問題・エラーメッセージ

[code]

    data is not defined
    
[/code]

### 該当のソースコード

[code]

    let axios = require("axios");
    
    let cityNumber = "130010";
    let url = "https://weather.tsukumijima.net/api/forecast?city=" + cityNumber;
    
    function getData() {
        axios
            .get(url)
    
        .then((response) => {
                let data =
                    response.data.forecasts[0].date +
                    "の天気は" +
                    response.data.forecasts[0].detail.weather +
                    "\n"; 
                return data;
            })
            .catch((err) => {
                console.log("ERROR", err);
            });
    }
    console.log(getData());
    
[/code]

### 補足情報（FW/ツールのバージョンなど）

Node.js v14.17.5.


CC BY-SA 4.0
2021-08-15T07:10:52.710
80816
2021-08-15T13:36:22.853
47414
question
javascript node.js axios
axiosでgetしたデータについて


`getData()`が何も返していないことが原因です。

次のように書き換えてみてください。

[code]

    function getData() {
        return axios // <-- !!
            .get(url)
            .then((response) => {
                let data =
                   response.data.forecasts[0].date +
                    "の天気は" +
                   response.data.forecasts[0].detail.weather +
                    "\n";
                return data;
            })
            .catch((err) => {
                console.log("ERROR", err);
            });
    }
    
    getData().then(data => console.log(data));
    
[/code]

ここで`getData()`が返すのはPromiseなので、呼び出し側もそれを処理するようなコードになっています。


CC BY-SA 4.0
2021-08-15T13:36:22.853
80824
2021-08-15T13:36:22.853
13199
80816
answer