TypeError:undefined不是函数Node JS
问题描述:
我是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)
答
如果GPIOController。 js是节点模块le(它看起来就是这样),它需要使用CommonJS模式。话虽如此,你应该将GPIOController中的var声明更改为导出。 你的功能名称在这里声明。
所以,VAR upButtonPress =函数(){}将成为
exports.upButtonPress = function(){}
然后,它将为您在MyService.js使用它。
谢谢,并为一个非常愚蠢的问题致歉 – MGD
无后顾之忧。相信我,在这个领域没有一个愚蠢的问题,因为代码有一种吸引你的方式,把你的焦点放在单一的树上而不是森林中。 – papiro
感谢您的慷慨评论:) – MGD