如何在 SocketIO 中使用 CommonJS 导出和导入?
How to use CommonJS exports and imports with SocketIO?
我正在尝试使用 CommonJS 模块稍微模块化我的服务器端代码。到目前为止,这是我的模块,在 motorDriver.js
文件中有一个函数:
var rpio = require('rpio');
function motorDriver() {
this.makeStep = function(pin) {
rpio.open(pin, rpio.OUTPUT, rpio.LOW);
/* On for 1 second */
rpio.write(pin, rpio.HIGH);
rpio.sleep(data.interval);
/* Off for half a second (500ms) */
rpio.write(pin, rpio.LOW);
}
}
module.exports = motorDriver;
然后我尝试导入它并像在 server.js
中那样使用它:
var motorDriver = require('./motorDriver');
io.on('connection', function (socket) {
var motor = motorDriver()
socket.on('make step', function () {
console.log("Make Step");
motor.makeStep(40)
});
});
当我按下按钮触发此套接字时,出现错误:
TypeError: Cannot read property 'makeStep' of undefined
at Socket.<anonymous> (/Users/gov-sur/Documents/CamSlider/server.js:38:15)
at Socket.emit (events.js:182:13)
at /Users/gov-sur/Documents/CamSlider/node_modules/socket.io/lib/socket.js:528:12
有谁知道我做错了什么或者我的误解在哪里?
提前致谢!
为了导出整个模块,我只是单独导出了每个函数:
function makeStep (pin) {
rpio.open(pin, rpio.OUTPUT, rpio.LOW);
/* On for 1 second */
rpio.write(pin, rpio.HIGH);
rpio.sleep(0.0001);
/* Off for half a second (500ms) */
rpio.write(pin, rpio.LOW);
}
module.exports = {
makeStep
}
像这样,我可以像最初的问题中所述那样使用它,但没有将它初始化为一个对象:
var motorDriver = require('./motorDriver');
io.on('connection', function (socket) {
var motor = motorDriver
socket.on('make step', function () {
console.log("Make Step");
motor.makeStep(40)
});
});
我正在尝试使用 CommonJS 模块稍微模块化我的服务器端代码。到目前为止,这是我的模块,在 motorDriver.js
文件中有一个函数:
var rpio = require('rpio');
function motorDriver() {
this.makeStep = function(pin) {
rpio.open(pin, rpio.OUTPUT, rpio.LOW);
/* On for 1 second */
rpio.write(pin, rpio.HIGH);
rpio.sleep(data.interval);
/* Off for half a second (500ms) */
rpio.write(pin, rpio.LOW);
}
}
module.exports = motorDriver;
然后我尝试导入它并像在 server.js
中那样使用它:
var motorDriver = require('./motorDriver');
io.on('connection', function (socket) {
var motor = motorDriver()
socket.on('make step', function () {
console.log("Make Step");
motor.makeStep(40)
});
});
当我按下按钮触发此套接字时,出现错误:
TypeError: Cannot read property 'makeStep' of undefined
at Socket.<anonymous> (/Users/gov-sur/Documents/CamSlider/server.js:38:15)
at Socket.emit (events.js:182:13)
at /Users/gov-sur/Documents/CamSlider/node_modules/socket.io/lib/socket.js:528:12
有谁知道我做错了什么或者我的误解在哪里?
提前致谢!
为了导出整个模块,我只是单独导出了每个函数:
function makeStep (pin) {
rpio.open(pin, rpio.OUTPUT, rpio.LOW);
/* On for 1 second */
rpio.write(pin, rpio.HIGH);
rpio.sleep(0.0001);
/* Off for half a second (500ms) */
rpio.write(pin, rpio.LOW);
}
module.exports = {
makeStep
}
像这样,我可以像最初的问题中所述那样使用它,但没有将它初始化为一个对象:
var motorDriver = require('./motorDriver');
io.on('connection', function (socket) {
var motor = motorDriver
socket.on('make step', function () {
console.log("Make Step");
motor.makeStep(40)
});
});