从外部javascript文件调用方法
我有2个javaScript文件。 我试图从一个文件向另一个文件调用一个方法,但我得到一个错误,即我的方法不存在(“TypeError:Object”没有方法“getServer”) 有来自第一个文件的方法:从外部javascript文件调用方法,javascript,html,node.js,Javascript,Html,Node.js,我有2个javaScript文件。 我试图从一个文件向另一个文件调用一个方法,但我得到一个错误,即我的方法不存在(“TypeError:Object”没有方法“getServer”) 有来自第一个文件的方法: function getServer(app, server) { var socket = require("socket.io"); app.get("/", function(request, response) { if(request.accepts("text/
function getServer(app, server)
{
var socket = require("socket.io");
app.get("/", function(request, response) {
if(request.accepts("text/html"))
{
app.use(express.static(__dirname + '/'));
response.sendfile(__dirname + "/index.html");
}
});
var io = socket.listen(server);
io.sockets.on('connection', function(client) {
............................................
............................................
});
有来自第二个文件的方法调用:
var msgServer = require('./firstFile.js');
msgServer.getServer(app, server);
在第一个文件中,我连接到服务器并侦听端口。
我想将此服务器发送到secont文件。
我需要第二个文件中的服务器和应用程序来使用socket.io
感谢您的回复(:您必须使用
exports
var:
exports.getServer = function(app, server)
{
var socket = require("socket.io");
app.get("/", function(request, response) {
............................................
............................................
});
它允许您为每个文件设置此函数
另一种方法是:
module.exports = {
getServer: funnction(app, server){...}
}
第一个文件是否将getServer包含在另一个变量和/或函数中,或者它是在全局命名空间中?您是在设置
module.exports.getServer=getServer
还是为module.exports
创建一个新对象,该对象包含getServer
它在全局命名空间中。我没有在allAdd:module.exports.getServer=getServer;
请参阅:了解更多信息。此外,我几乎总是建议使用module.exports
语法。简单的exports
只是一个引用(别名),可能会被意外覆盖,并导致不清楚的情况和问题。我认为这是最佳做法。