簡體   English   中英

TypeError:undefined不是Node JS函數

[英]TypeError: undefined is not a function Node JS

我是JavaScript的新手,我正在運行一個非常基本的代碼,但是遇到了麻煩。 代碼如下

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是一個節點模塊(看起來像它),則需要使用CommonJS模式。 話雖如此,您應該將GPIOController中的var聲明更改為export。 您的功能名稱在這里聲明。

因此,var upButtonPress = function(){}將變為

exports.upButtonPress = function(){}

然后,它將在您在MyService.js中使用時正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM