#node.js
#node.js
Вопрос:
Я столкнулся с проблемой, связанной с вызовом экспортированной функции внутри того же файла.
Когда я вызываю ее, ошибка показывает следующее.
UnhandledPromiseRejectionWarning: ReferenceError: findOrCreateMedia is not defined
где findOrCreateMedia
моя функция. Как я могу это исправить?
Ответ №1:
Попробуйте это:
function functionName() { ... };
exports.functionName = functionName;
functionName();
Ответ №2:
Это происходит потому, что вы теряете this
ссылку на объект внутри вызывающей функции. Например:
module.exports.a = function () {
return true
}
module.exports.b = function() {
return this.a();
}
здесь вы столкнетесь с проблемой, потому что, когда вы вызываете this.a() , он ссылается на this
объект b
функции.
Чтобы решить эту проблему, вам нужно где-то сохранить свою this
ссылку на объект или использовать функцию arrow, потому что функция arrow не имеет собственного this
объекта, поэтому она всегда будет ссылаться на внешний this
объект
Чтобы решить эту проблему, измените свою функцию следующим образом
module.exports.a = function () {
return true
}
module.exports.b = () => {
return this.a();
}
Ответ №3:
вы также можете импортировать / экспортировать функцию ES6:-
const someFunction = (){
...
}
export default someFuntion ( in the case on single function)
Когда вы хотите экспортировать несколько функций
export { someFunction1, someFunction2}.
Теперь место, куда вы хотите импортировать
import somFunction from 'filelocation' ( note in case of default exports you need to use the same name of the function)
В случае нескольких функций.Вы можете изменить имя функции, но помните о порядке экспорта и импорта.
import { myFunction1,myFunction2} from 'fileLocation'