Uncaught TypeError: Object (...) не является функцией в HTMLButtonElement.addHandleSubmit - PullRequest
1 голос
/ 15 апреля 2020

Не уверен, что понимаю, почему отображается эта ошибка. Кажется, что ошибка исчезает при комментировании getCityData("username", where) в HandleSubmit. js. Я проверил соответствующие ответы на это, но, похоже, не связаны между собой.

JS: Uncaught TypeError: объект не является функцией (onclick)

Заранее спасибо

Ошибка

HandleSubmit.js:16 Uncaught TypeError: Object(...) is not a function
    at HTMLButtonElement.addHandleSubmit (HandleSubmit.js:16)

getData. js

import axios from 'axios';

 async function getCityData(username, city) {
    const url=  "http://api.geonames.org/searchJSON?q=",
    completeURL = `${url}${city}&username=${username}`
    console.log(completeURL)

    try {
        let data = await axios.get(completeURL).then((response) => {
            console.log(response.data);
            console.log(response.status);
            console.log(response.statusText);
            console.log(response.headers);
            console.log(response.config);
            data = response;
          });
          return data;

    }
    catch(error) {
        console.log("error", error);
      }



}

export default  {
    getCityData
}

HandleSubmit. js

import getCityData from "./getData"



function addHandleSubmit (e) {
    e.preventDefault()
    const where = document.getElementById("where").value
    const when = document.getElementById("when").value

    // if (where=='' || when=='') {
    //     alert('Please make sure you have add a Where and When')
    // }
    console.log(`To ${where} departing ${when}`)


   getCityData("username", where)




}
export default {
    addHandleSubmit
}


index. js

import "./styles/styles.scss";
import addHandle from "./js/HandleSubmit";
import getCityData from "./js/getData";


document.getElementById("add-trip").addEventListener('click', addHandle.addHandleSubmit)

export {
    addHandle,
    getCityData

}

index. html

                 <div class="add-trip-form">
                        <form>
                            <label for="where"> where</label>
                            <input type="text" id="where"> 
                            <label for="when"> When</label>
                            <input type="date" id="when">
                            <button class="add-trip-class" id="add-trip"> Add Trip</button>
                        </form>
                    </div>

1 Ответ

1 голос
/ 15 апреля 2020

В HandleSubmit. js вы должны импортировать так:

import { getCityData } from "./getData"

В противном случае вы бы импортировали getCityData как объект, а не как функцию. Вот почему вы получаете эту ошибку

...