节点JS Nodemailer POST内部服务器错误500

节点JS Nodemailer POST内部服务器错误500

问题描述:

大家好我试图从我的网站与nodemailer发送电子邮件和表达路由后按发送按钮我有info/contactForm 500内部服务器错误任何想法如何解决它。节点JS Nodemailer POST内部服务器错误500

//app.js

// CONFIG 
const express = require('express'); 
const app = express(); 
const exphbs = require('express-handlebars'); 
const compression = require('compression'); 
const config = require('./src/server/config/config'); 

const http = require('http'); 
const path = require('path'); 
const cookieParser = require('cookie-parser'); 
const bodyParser = require('body-parser'); 
const routes = require('./src/server/routes/index'); 
const nodemailer = require('./src/server/email/emailTransporter'); 

// view engine setup 
const hbs = exphbs.create({ 
    defaultLayout: 'layout', 
    extname: '.hbs', 
    partialsDir: [ 
     './src/client/views/' 
    ] 
}); 
app.set('views', path.join(__dirname, './src/client/views')); 
app.engine('handlebars', hbs.engine); 
app.set('view engine', 'handlebars'); 

/** 
* Get port from environment and store in Express. 
*/ 
const port = normalizePort(process.env.PORT || '3000'); 
const environment = process.env.NODE_ENV; 
app.use(compression()); 
app.set('port', port); 
app.use('/', express.static(__dirname, './src/client/views', { 
    maxage: '1y' 
})); 
app.use('/', routes); 
app.use('/portfolio', routes); 
/** 
* Create HTTP server. 
*/ 

const server = http.createServer(app); 

/** 
* Listen on provided port, on all network interfaces. 
*/ 

server.listen(port); 
server.on('error', onError); 
server.on('listening', onListening); 

/** 
* Normalize a port into a number, string, or false. 
*/ 

function normalizePort(val) { 
    const port = parseInt(val, 10); 

    if (isNaN(port)) { 
     // named pipe 
     return val; 
    } 

    if (port >= 0) { 
     // port number 
     return port; 
    } 

    return false; 
} 

/** 
* Event listener for HTTP server "error" event. 
*/ 

function onError(error) { 
    if (error.syscall !== 'listen') { 
     throw error; 
    } 

    const bind = typeof port === 'string' ? 'Pipe ' + port : 'Port ' + port; 

    // handle specific listen errors with friendly messages 
    switch (error.code) { 
     case 'EACCES': 
      console.error(bind + ' requires elevated privileges'); 
      process.exit(1); 
      break; 
     case 'EADDRINUSE': 
      console.error(bind + ' is already in use'); 
      process.exit(1); 
      break; 
     default: 
      throw error; 
    } 
} 

//index.js - 快速路由

const express = require('express'); 
const router = express.Router(); 
const config = require('../config/config'); 
const sendEmail = require('../email/emailTransporter'); 
const nodemailer = require('nodemailer'); 
/* Set HEaders. */ 
router.use('/*', function(req, res, next) { 
    res.setHeader('Cache-Control', 'public, max-age=864000'); 
    res.setHeader("Content-Type", "text/html"); 
    next(); 
}); 

/* GET home page. */ 
router.get('/', function(req, res, next) { 
    var vm = { 
     title: 'Portfolio' 
    }; 
    res.render('index.hbs', vm); 
}); 

/* GET portfolio. */ 
router.get('/portfolio', function(req, res, next) { 
    var vm = { 
     title: 'portfolioPage' 
    }; 
    res.render('portfolio.hbs', vm); 
}); 

/* SEND EMAIL . */ 
router.post('/contactForm', sendEmail); 

module.exports = router; 

//角接触控制器

(function() { 
    'use strict'; 

    angular 
     .module('app.layout') 
     .controller('contactCtrl', contactCtrl); 

    /* @ngInject */ 
    function contactCtrl(emailService) { 
     var vm = this; 
     // CONTACT FORM 
     vm.data = {}; 
     vm.invalidClass = false; 
     vm.sendEmail = function(contactForm) { 
      vm.submitClicked = true; 
      if (contactForm.$valid) { 
       emailService.sendEmail(vm.data); 
      } else { 
       vm.invalidClass = true; 
      } 
     }; 
    } 
})(); 

//角电子邮件服务

(function() { 
    'use strict'; 
    angular 
     .module('app.layout') 
     .factory('emailService', emailService); 
    /* @ngInject */ 
    function emailService($http, growl) { 
     var service = { 
      sendEmail: sendEmail 
     }; 
     return service; 

     function sendEmail(emailData) { 
      return $http.post('/contactForm', emailData) 
       .then(function(data) { 
        growl.addSuccessMessage("Your Email was sent"); 
       }) 
       .catch(function(err) { 
        growl.addErrorMessage("Message not sent"); 
        console.log(err); 
       }); 
     } 
    } 
})(); 
+0

对不起,我知道这不是你要找的答案,但如果你的webapp可以返回500,某处出现错误消息(可能是某个地方已存在日志),那么*那*是您必须解决的问题。如果你不首先处理,你会发疯。所有的进程管理器(永远的,nodemon,pm2)都有一些日志支持,或者是vanilla:'node app.js> app.log 2> err.log',同时检查你的web服务器日志。 – ippi

我认为你应该解析body to json use app.use(bodyParser.json());我以为你收到的客户,而不是客户端jspon这里是更多信息https://www.gitbook.com/book/kevinchisholm/handling-post-requests-with-express-and-node-js/details如何解决它你的问题