2015-06-20 166 views
0

我是JavaScript的新手,我正在運行一個非常基本的代碼,但遇到問題。代碼如下所示TypeError:undefined不是函數Node JS

MyService.js

var http = require('http'); 
var express = require('express'); 
var app = express(); 

var gpioControl = require('./GPIOController'); 

app.get('/pressUp/', function (req, res){ 
    console.log("Pressed Up"); 
    gpioControl.upButtonPress(); 
}); 

app.get('/pressDown/', function (req, res){ 

    console.log("Pressed Down"); 
    gpioControl.downButtonPress(); 
}); 

app.listen(3000); 

console.log("The server is running on port 3000"); 

GPIOController.js

var upButtonPress = function() 
{ 
    console.log ("UP Button has been pressed!"); 
} 

var downButtonPress = function() 
{ 
    console.log ("Down Button has been pressed!"); 
} 

我得到的錯誤是如下:

TypeError: undefined is not a function 
    at C:\Users\mehroz\Desktop\Rasberry Pi Automation\MyService.js:11:14 
    at Layer.handle [as handle_request] (C:\Users\mehroz\Desktop\Rasberry Pi Automation\node_modules\express\lib\router\layer.js:82:5) 
    at next (C:\Users\mehroz\Desktop\Rasberry Pi Automation\node_modules\express\lib\router\route.js:110:13) 
    at Route.dispatch (C:\Users\mehroz\Desktop\Rasberry Pi Automation\node_modules\express\lib\router\route.js:91:3) 
    at Layer.handle [as handle_request] (C:\Users\mehroz\Desktop\Rasberry Pi Automation\node_modules\express\lib\router\layer.js:82:5) 
    at C:\Users\mehroz\Desktop\Rasberry Pi Automation\node_modules\express\lib\router\index.js:267:22 
    at Function.proto.process_params (C:\Users\mehroz\Desktop\Rasberry Pi Automation\node_modules\express\lib\router\index.js:321:12) 
    at next (C:\Users\mehroz\Desktop\Rasberry Pi Automation\node_modules\express\lib\router\index.js:261:10) 
    at expressInit (C:\Users\mehroz\Desktop\Rasberry Pi Automation\node_modules\express\lib\middleware\init.js:23:5) 
    at Layer.handle [as handle_request] (C:\Users\mehroz\Desktop\Rasberry Pi Automation\node_modules\express\lib\router\layer.js:82:5) 

回答

1

如果GPIOController。 js是節點模塊le(它看起來就是這樣),它需要使用CommonJS模式。話雖如此,你應該將GPIOController中的var聲明更改爲導出。 你的功能名稱在這裏聲明。

所以,VAR upButtonPress =函數(){}將成爲

exports.upButtonPress = function(){} 

然後,它將爲您在MyService.js使用它。

+0

謝謝,併爲一個非常愚蠢的問題致歉 – MGD

+0

無後顧之憂。相信我,在這個領域沒有一個愚蠢的問題,因爲代碼有一種吸引你的方式,把你的焦點放在單一的樹上而不是森林中。 – papiro

+0

感謝您的慷慨評論:) – MGD

相關問題