[英]ReferenceError: io is not defined in NodeJS
我有一个NodeJS项目,并且需要另一个文件中我的app.js文件中定义的变量之一,这可能吗?
我的密码
app.js
var app = express();
var io = require('socket.io').listen(app);
...
otherFile.js
var models = require('../models');
var express = require('express');
var path = require('path');
var fs = require("fs"); //To-Delete
var recursive = require('recursive-readdir');
var router = express.Router();
var app = require ('../app.js');
// creating a new websocket to keep the content updated without any AJAX request
app.io.sockets.on('connection', function(socket) {
fs.watchFile(__dirname + '../README.md', function(curr, prev) {
// on file change we can read the new xml
fs.readFile(__dirname + '../README.md', function(err, data) {
if (err) throw err;
// parsing the new xml data and converting them into json file
// var json = parser.toJson(data);
// send the new data to the client
socket.volatile.emit('notification', {message: 'el archivo cambio'});
});
});
});
我在这种情况下得到的错误是TypeError: Cannot read property 'sockets' of undefined
块引用
当您这样做时:
var io = require('socket.io').listen(app);
您只需创建一个局部变量,该局部变量仅在该文件的范围内可见。
如果您想在导入app
之后使用app.io
从另一个文件访问它,则需要:
将io
添加为应用程序的属性:
app.io = io;
或简单地将两者结合起来:
app.io = require('socket.io').listen(app);
从socket.io文档,这应该工作:
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
io.sockets.on('connection', function(socket) {
// ... your code
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.