#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();
в ваш основной контроллер приложения.