#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/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);
В первом файле я подключаюсь к серверу и прослушиваю порт.
Я хочу отправить этот сервер во второй файл.
Мне нужны сервер и приложение во втором файле, чтобы использовать socket.io .
спасибо за ответ (:
Комментарии:
1. Заключает ли первый файл getServer в другую переменную и / или функцию или он находится в глобальном пространстве имен?
2. вы устанавливаете
module.exports.getServer = getServer
или создаете новый объект дляmodule.exports
того, который содержитgetServer
3. Он находится в глобальном пространстве имен.
4. Я вообще не использовал module.exports
5. Добавить:
module.exports.getServer = getServer;
Ответ №1:
Вы должны использовать exports
var:
exports.getServer = function(app, server)
{
var socket = require("socket.io");
app.get("/", function(request, response) {
............................................
............................................
});
Это позволяет вам установить эту функцию доступной для каждого файла.
Другой способ сделать это:
module.exports = {
getServer: funnction(app, server){...}
}
Комментарии:
1. См.: Модули: Объект module для получения дополнительной информации.
2. Кроме того, я бы почти всегда рекомендовал
module.exports
синтаксис. Simpleexports
— это просто ссылка (псевдоним), которая может быть случайно перезаписана и привести к неясным ситуациям и проблемам. Я думаю, это лучшая практика.