Я делаю приложение, используя Node.js, Express.js и MongoDB. Я использую шаблон MVC, а также имею отдельный файл для маршрутов. Я пытаюсь создать класс контроллера, в котором метод вызывает другой метод, объявленный в нем. Но мне кажется, что я не могу этого сделать. Я получаю «Невозможно прочитать свойство неопределенного».
файл index.js
let express = require('express');
let app = express();
let productController = require('../controllers/ProductController');
app.post('/product', productController.create);
http.createServer(app).listen('3000');
Файл ProductController.js
class ProductController {
constructor(){}
create(){
console.log('Checking if the following logs:');
this.callme();
}
callme(){
console.log('yes');
}
}
module.exports = new ProductController();
Когда я запускаю это, я получаю следующее сообщение об ошибке:
Cannot read property 'callme' of undefined
Я запустил этот код сам по себе с небольшими изменениями, как показано ниже, и он работает.
class ProductController {
constructor(){}
create(){
console.log('Checking if the following logs:');
this.callme();
}
callme(){
console.log('yes');
}
}
let product = new ProductController();
product.create();
Почему одно работает, а другое нет? ПОМОЩЬ!
callme = () => {...}
вместо этогоcallme() {...}
). github.com/facebook/flow/issues/5874#issuecomment-369922816 - person Derek Soike   schedule 10.01.2019