2017-10-20 101 views
0

大家好,我尝试使用以下上的JavaScript RPI:GPIOCtrl不是一个函数

var gpio = require("pi-gpio"); 
var gpioPin = 4; 
var isOpened=false; 
var unlock = function(){ 
if(!isOpened){ 
/* Open the door lock */ 
gpio.write(gpioPin, 1, function() { 
isOpened = true; 
}); 
/*Lock door in 2 seconds*/ 
setTimeout(function() { 
gpio.write(gpioPin, 0, function() { 
isOpened = false; 
}); 
}, 2000);}} 

然后创建一个门锁如下:

var http = require('http'); var express = require('express'); 
var app = express(); 
var GPIOCtrl = require('./controller.js'); 
app.get('/unlock/', function(req, res){ 
GPIOCtrl.unlock(); 
}); 
app.listen(3000); 
console.log('App Server running at port 3000'); 

当我运行程序我得到消息应用服务器运行在端口3000,但是当我打电话时,我收到以下消息:

TypeError: GPIOCtrl.unlock is not a function 

我是什么做错了?

回答

0

你必须export你的模块,如您controller.js如下:

var gpio = require("pi-gpio"), 
    gpioPin = 4, 
    isOpened = false, 

module.exports = { 
    unlock: function() { 
    if (!isOpened) { 
     /* Open the door lock */ 
     gpio.write(gpioPin, 1, function() { 
     isOpened = true; 
     }); 

     /*Lock door in 2 seconds*/ 
     setTimeout(function() { 
     gpio.write(gpioPin, 0, function() { 
      isOpened = false; 
     }); 
     }, 2000); 
    } 
    } 
} 
+0

谢谢你,我只是改变了这一切,并获得过去的错误。现在我得到错误:针编号isn ' t有效 –

+0

@ShanePitts是的,这是因为'GPIO 4'用于根据[引脚输出](https://pinout.xyz/) –

+0

供电所以根据图I因为我连接到BCM 4,会想要输入7吗? –