这是我如何构建我的代码
主要.js
var express = require('express');
var http = require('http');
var app = express();
var io = require('socket.io')(http.createServer(app));
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
module.exports.io = io; // because I wont to access this object from Home.js module
Index.js
var express = require('express')
, router = express.Router();
router.use('/home', require('./home'))
module.exports = router
Home.js
var express = require('express')
, router = express.Router();
io = require('../main').io;
router.get('/', function(req, res,next) {
res.send("response from home controller"+ io );
})
现在问题就在这里 当我尝试访问时 http://localhost:3000/home ,我得到以下回复 "来自家庭控制器的响应未定义" (对象io未定义)
伙计们,你能突出我错误的地方
答案 0 :(得分:1)
问题是您尚未在Home.js中定义变量
在Home.js中将此import boto3
s3_client = boto3.Session().client('s3')
response = s3_client.get_object(Bucket='hotsapi',
Key='18e8b4df-6dad-e1f5-bfc7-48899e6e6a16.StormReplay',
RequestPayer='requester')
response_content = response['Body'].read()
with open('./B01.StormReplay', 'wb') as file:
file.write(response_content)
更改为io = require('../main').io;
答案 1 :(得分:0)
以下对我有用:
Home.js
var express = require('express');
, router = express.Router();
var io = require('../main');
router.get('/', function(req, res, next) {
res.send("response from home controller "+ io );
});
我一直在拼命寻找一种更合适的解决方案,以使io在不同的文件中可用,但是直到现在,我才找到我在这里提到的那个。