Вы отделили метод от объекта, который имеет метод test
, когда сделали это:
import { customFunction } from './customFunction'
Итак, когда вы попытаетесь вызвать customFunction()
, он не будет связан с объектом он объявлен внутри и, следовательно, не может ссылаться на this.test()
, потому что this
будет undefined
.
К вашему сведению, присвоение экспорту того же имени, а свойство при экспорте безнадежно сбивает с толку ваши клиенты. Пожалуйста, не делайте этого.
Я бы предложил исправить это, сделав ваш модуль независимым от того, как он вызывался, изменив его, чтобы он больше не использовал this
:
const moduleObj = {
test() {
console.log('test called')
},
async customFunction(parent: any, args: any, ctx: any, info: any) {
console.log('customFunction init')
console.log('this', this)
moduleObj.test()
console.log('customFunction end')
},
}
export default moduleObj;
Затем вы можете использовать:
import { customFunction } from './customFunction'
И затем вы можете позвонить:
customFunction()
, и он сможет нормально функционировать при вызове.