Неперехваченная ошибка типа: UICtrl.GetInput не является функцией

#javascript #node.js #module #node-modules #es6-modules

#javascript #node.js #модуль #узлы-модули #es6-модули

Вопрос:

Я хочу получить входные данные из модуля UIController и зарегистрировать их в моем основном файле AppController. Но я получаю эту ошибку, показанную ниже. Кто-нибудь может мне помочь?

Это модуль контроллера пользовательского интерфейса:

 export default function UIController() {
    return {
        // get inputs
        getInput: function () {
            return {
                type: document.querySelector(".add__type").value,
                description: document.querySelector(".add__description").value,
                value: document.querySelector(".add__value").value,
            };
        },
    };
}
  

Это основной файловый контроллер приложения:

 // Import modules
import UIController from "./UIController.js";

// App controller
((UICtrl) => {
    function ctrlAddItem() {
        // get input data
        let input = UICtrl.getInput();
        console.log(input);
    }

    document.querySelector(".add__btn").addEventListener("click", ctrlAddItem);
})(UIController);
  

Это точная ошибка, которую я получаю в консоли

 Uncaught TypeError: UICtrl.getInput is not a function
at HTMLButtonElement.ctrlAddItem (appController.js:9)
  

Комментарии:

1. Используйте: import { UIController } from "./UIController.js" ; Используйте деструктор объекта, чтобы указать на функцию UIController.

2. не сработало….

3. Пожалуйста, используйте следующую ссылку: geeksforgeeks.org/reactjs-importing-exporting это поможет вам решить, какой из способов экспорта функции вам лучше всего подходит. В общем, я рекомендую использовать: module.exports = { // Define your exports here. } а также, пожалуйста, убедитесь, что вы импортируете с правильного уровня файла при использовании импорта. ./UIController.js Действительно ли он находится в той же папке, что и контроллер приложения? вероятно, да, но просто проверьте это.

4. Кстати, я не уверен, что требуется определение по умолчанию.

Ответ №1:

Поскольку вы возвращаетесь function из UiController модуля.

Поэтому вам придется добавить paranthesis () подобным образом let input = UICtrl().getInput(); в ваш основной контроллер приложения.