Есть router на express:
import Router from "express";
import ModbusController from "../Controllers/ModbusController.js";
const mb = new ModbusController();
const modbusRouter = new Router();
modbusRouter.get('/write/:id/:action', (req, res) => mb.writeSingleCoil(req, res));
modbusRouter.get('/read/:id', (req, res) => mb.readSingleCoil(req, res));
modbusRouter.get('/read', (req, res) => mb.readAllCoils(req, res));
export default modbusRouter;
Есть класс ModbusController:
import modbus from "jsmodbus";
import net from "net";
import dotenv from "dotenv";
export default class ModbusController {
// много неважного кода
readSingleCoil(req, res) {
const {id} = req.params
this.client.readCoils(id,1)
.then( resp => {
const coilStatus = resp.response._body._valuesAsArray[0];
res.status(200).json({ch: id, status: coilStatus})
})
.catch(e => this.errorOccurred(e))
}
Так все работает, но я почти на 100% уверен, что строчку вызова функции из контроллера можно записать так:
modbusRouter.get('/read/:id', mb.readSingleCoil);
Почему у меня выскакивает ошибка: '(node:11488) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'readSingleCoil' of undefined' ?
testВы нигде не обращаетесь кthis. – Jan 27 '22 at 13:39modbusRouter.get('/read/:id', mb.readSingleCoil.bind(mb));– Jan 27 '22 at 13:58