Как вызвать экспортированную функцию внутри того же файла

#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'