2016-04-24 13 views
0

Also, ich schreibe eine Knoten-App, und ich versuche, eine Funktion hinzuzufügen, die aufgerufen wird, wenn ein neuer Benutzer erstellt wird. Ich verwende die Twilio-API, um eine SMS an jemanden zu senden, sobald sich ein Benutzer für die App anmeldet.Die Knoten-App erkennt die Funktion nicht

app.js

var express = require('express'); 
var db = require('./models'); 
var bodyParser = require('body-parser'); 
var methodOverride = require("method-override"); 
var app = express(); 
var session = require('express-session'); 
var app = express(); 
var twilio = require('./js/twilio.js'); 

// app.set('port', (process.env.PORT || 3000)); 

app.use(express.static(__dirname + '/public')); 

// views is directory for all template files 
app.set('views', __dirname + '/views'); 
app.post("/signup", function (req, res) { 
    // Creating object to pass into db and twilio: 
    var new_user = { 
    first_name : req.body.first_name, 
    last_name : req.body.last_name, 
    phone : req.body.phone, 
    partner_phone : req.body.partner_phone, 
    email : req.body.email, 
    password : req.body.password 
    }; 
console.log("The new_user is: ", new_user) 
    twilio.send_sms_to(new_user); 
    db.User.create({first_name: new_user.first_name, last_name: new_user.last_name,  phone: new_user.phone, partner_phone: new_user.partner_phone, email:  new_user.email, password: new_user.password}).then(function(user){ 
     res.render("login"); 
    }); 
}); 

twilio.js

var send_sms_to = function (user) { 
var client = new twilio.RestClient('secret key', 'super secret key'), msg =  "Hello potential new user!", 
    phone = user.partner_phone, 
    name = user.first_name + " " + user.last_name; 
    console.log("Entries are: ", user.phone, user.first_name) 
    client.sms.messages.create({ 
    to: phone, 
    from:'+16507970229', 
    body: msg 
}, function(error, message) { 
    // The HTTP request to Twilio will run asynchronously. This callback 
    // function will be called when a response is received from Twilio 
    // The "error" variable will contain error information, if any. 
    // If the request was successful, this value will be "falsy" 
    if (!error) { 
     // The second argument to the callback will contain the information 
     // sent back by Twilio for the request. In this case, it is the 
     // information about the text messsage you just sent: 
     console.log('Success! The SID for this SMS message is:'); 
     console.log(message.sid); 
     console.log('Message sent on:'); 
     console.log(message.dateCreated); 
    } else { 
     console.log('Oops! There was an error.'); 
    } 
    }); 
}` 

Aber jedes Mal, wenn ich die Post-Anforderung laufen bekomme ich einen Fehler

Typeerror: twilio.send_sms_to ist keine Funktion

bei /Users/jamesbradley/codeProjects/indulge/indulge_app/app.js:256:10

(das ist die Linie "twilio.send_sms_to (neuer Benutzer);" in der app.js Datei)

... obwohl Nodemon den Server ohne Probleme läuft. Was mache ich falsch?

+0

Es scheint nur ein einfacher Pfad Problem auf Ihrem Server. Anscheinend, 'require ('./ public/js/ttilio.js');' ist nicht der richtige Weg zu deiner 'ttilio.js'. – jfriend00

+0

Der Pfad zu 'ttilio.js' in' app.js' und die Fehlerausgabe stimmen nicht überein, wobei der Fehler die führende Periode ('.') enthält. Gibt es noch andere Orte, an denen "twilio.js" benötigt wird, die zu dem Fehler führen können? –

+0

Ich habe alles versucht und kann nicht herausfinden, wie man den Pfad repariert: ('./public/js/twilio.js') ('./js/twilio.js') ('../ public/js/twilio.js ') (' ../js/twilio.js ') (' public/js/twillio.js ') (' js/twillio.js ') –

Antwort

1

Meine Vermutung ist, dass Sie gerade vergessen haben, die send_sms_to Funktion in Ihre twilio.js Datei zu exportieren.

Versuchen Sie, module.exports.send_sms_to = send_sms_to; an seinem Ende hinzuzufügen. Andernfalls wird er nicht Teil des Moduls sein, wenn Sie es woanders importieren.

Wenn ich recht habe, möchten Sie vielleicht mehr über node.js Module here lernen.

Verwandte Themen