Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Nodejs-正确地从其他文件调用方法_Javascript_Node.js_Websocket - Fatal编程技术网

Javascript Nodejs-正确地从其他文件调用方法

Javascript Nodejs-正确地从其他文件调用方法,javascript,node.js,websocket,Javascript,Node.js,Websocket,我是这个领域的新手,想要修复这个错误,我有两个类,'Ticket.js'用于放置我的路由,还有'support.js'用于声明我的websockets方法, 我只想使用第一个文件中第二个文件中的方法, 以下是两个文件的代码结构: class SupportTicketRouter { . . . sendMessagesSocket = (req, res, next) => { const SUPPORT_SOCKET = require('app/routes

我是这个领域的新手,想要修复这个错误,我有两个类,'Ticket.js'用于放置我的路由,还有'support.js'用于声明我的websockets方法, 我只想使用第一个文件中第二个文件中的方法, 以下是两个文件的代码结构:

class SupportTicketRouter  {
.
.
.
    sendMessagesSocket = (req, res, next) => {
        const SUPPORT_SOCKET = require('app/routes/socket/support');
        const MESSAGES       = req.api.support.messages;

        SUPPORT_SOCKET.sendModifiedTicket(MESSAGES);

        next();
    }
}

在另一个文件中:

const SUPPORT_SOCKET = (MQTT_CLIENT, REDIS_CLIENT, IO_SERVER, IO_CLIENT) => {

   // EntryPoints

   // Exit points
   SUPPORT_SOCKET.sendModifiedTicket = (data) => {
       IO_SERVER.in(data[0]._id).emit('OneTicketReload', data);
       Logger.info('%s%s', 'Ticket sent to room ', data[0]._id);
   };


所以基本上我只想从另一个文件调用sendModifiedTicket


提前感谢

您应该从定义函数的文件中导出函数:

module.exports = SUPPORT_SOCKET
然后将其包括在您想要使用的任何位置:

const supportSocket = require('./path-to-js-file').
class SupportTicketRouter  {...
这也可能有助于:

Controller.js

export class Controller {
   constructor(){ 
        this.method  = this.method.bind(this)
   }

    method (req, res) {....}
}
OtherFile.js

函数替代法{ 常数控制器=新控制器; 控制器.方法 }
具体问题是什么?从不同的文件调用另一个函数对您来说应该不是问题,我猜,因此请澄清您到底在寻求什么帮助。我在调用函数时遇到此错误:类型上不存在属性“sendModifiedTicket”是否正确导出?console.log在您调用其他函数的第二个文件中记录变量这就是问题所在,我没有正确导出,也不知道如何修复它,在我的第二个文件“module.exports=SUPPORT_SOCKET;”的末尾有这个变量所以我猜,只要调用'const-SUPPORT_-SOCKET=require'app/routes/SOCKET/SUPPORT',就足以获得第一个文件中的方法;您确定您正确定位了文件吗?使用文件夹结构更新问题,并将您的代码与您一起导出到其他文件中需要该函数。我已经这样做了,但我收到了以下错误信息:“MQTT_客户端:任意,REDIS_客户端:任意,IO_服务器:任意,IO_CLIENT:any=>void我想这是因为我在另一个方法中有一个方法,sendModifiedTicket-inside-SUPPORT\u-TICKET!当尝试访问sendModifiedTicket时,我得到以下错误:SUPPORT_SOCKET.sendModifiedTicket不是函数如果在定义SUPPORT_SOCKET的文件中有多个导出,那么在导入方法时,将常量的名称放在花括号中:const{supportSocket}=require./path to js file';