私はMEANスタックにかなり慣れていないので、フロントエンドでAngular JSによって処理され、バックエンドでExpressに渡されてNodemailerによって電子メールとして送信されるコンテンツフォームから値を送信しようとしています。
Angular から Express へのルーティングに問題があり、このスタックのドキュメントはかなりまばらなようです。また、ノードメーラーを使用して電子メールを送信すると想定しています。その情報やベストプラクティスも高く評価されます。
私のapp.js
var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var contact = require('./routes/contact'); // Contact Form
var http = require('http');
var path = require('path');
var app = express();
var nodemailer = require("nodemailer");
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
// development only
if ('development' == app.get('env')) {
app.use(express.errorHandler());
}
app.get('/', routes.index);
app.get('/users', user.list);
app.post('/contact', contact.process); // Contact form route
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
私のcontact.js
exports.post('/contact', function(req, res) {
console.log('I Made it to Express');
process(req, res);
});
私のAngularコントローラー
app.controller('contactController', function($scope, $http, $location) {
$scope.formData = {};
$scope.processForm = function() {
console.log('Im in the controller');
// Trigger validation flag.
$scope.submitted = true;
$http.post('/contact', {
name: $scope.formData.name,
email: $scope.formData.email,
message: $scope.formData.message
}).success(function(data, status, headers, config) {
if(data.success){
$location.path('/');
}else {
//do something about the error
}
});
};
});
そして最後に私のAngularアプリ
'use strict';
var app = angular.module('app', ['ngRoute']).config(function($routeProvider, $locationProvider) {
// Route: Default Widget View
$routeProvider.when('/contact', {
controller: 'contactController'
});
});
私が見ているエラーは contact.js にあります - TypeError: Object # has no method 'post'
ここに私のフォルダ構造があります: