2016-04-24 4 views
0

Итак, я пишу приложение Node, и я пытаюсь добавить функцию, которая будет вызываться при создании нового пользователя. Я использую Twilio API для отправки SMS-сообщения кому-то, как только пользователь подписывается на приложение.Узел приложения не распознает функцию

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.'); 
    } 
    }); 
}` 

Но каждый раз, когда я запускаю запрос на почту, я получаю сообщение об ошибке

TypeError: twilio.send_sms_to не является функцией

по адресу /Users/jamesbradley/codeProjects/indulge/indulge_app/app.js:256:10

(это линия "twilio.send_sms_to (new_user);" в app.js файле)

... хотя Nodemon работает сервер без каких-либо проблем. Что я делаю не так?

+0

Просто кажется простой проблемой на вашем сервере. По-видимому, 'require ('./ public/js/twilio.js');' не правильный путь к вашему 'twilio.js'. – jfriend00

+0

Путь к 'twilio.js' в' app.js' и вывод ошибки не совпадают с ошибкой, лишенной ведущего периода ('.'). Существуют ли другие места, где требуется «twilio.js», что может привести к ошибке? –

+0

Я пробовал все и не могу понять, как исправить путь: ('./public/js/twilio.js') ('./js/twilio.js') ('../ public/js/twilio.js ') (' ../js/twilio.js ') (' public/js/twilio.js ') (' js/twilio.js ') –

ответ

1

Моя догадка заключается в том, что вы просто забыли экспортировать функцию send_sms_to в файл twilio.js.

Попробуйте добавить module.exports.send_sms_to = send_sms_to; на свой конец. В противном случае он не будет частью модуля при импорте в другое место.

Если я прав, вы можете узнать больше о node.js-модулях here.

Смежные вопросы