【问题标题】:nodejs/express express.createserver is not a functionnodejs/express express.createserver 不是函数
【发布时间】:2019-10-07 08:21:40
【问题描述】:

我对 node.js 很陌生,我正在尝试使用 nodemailer 发送电子邮件,但我目前在控制台上遇到类型错误。

//错误// [0] 类型错误:express.createServer 不是函数 [0] 在 app.post (/Users/thomashunt/Desktop/react_express_starter/server.js:33:17) [0] 在 Layer.handle [as handle_request] (/Users/thomashunt/Desktop/react_express_starter/node_modules/express/lib/router/layer.js:95:5) [0] 在下一个(/Users/thomashunt/Desktop/react_express_starter/node_modules/express/lib/router/route.js:137:13) [0] 在 Route.dispatch (/Users/thomashunt/Desktop/react_express_starter/node_modules/express/lib/router/route.js:112:3) [0] 在 Layer.handle [as handle_request] (/Users/thomashunt/Desktop/react_express_starter/node_modules/express/lib/router/layer.js:95:5) [0] 在 /Users/thomashunt/Desktop/react_express_starter/node_modules/express/lib/router/index.js:281:22 [0] 在 Function.process_params (/Users/thomashunt/Desktop/react_express_starter/node_modules/express/lib/router/index.js:335:12) [0] 在下一个(/Users/thomashunt/Desktop/react_express_starter/node_modules/express/lib/router/index.js:275:10) [0] 在 urlencodedParser (/Users/thomashunt/Desktop/react_express_starter/node_modules/body-parser/lib/types/urlencoded.js:82:7) [0] 在 Layer.handle [as handle_request] (/Users/thomashunt/Desktop/react_express_starter/node_modules/express/lib/router/layer.js:95:5)

//错误结束

这是我的 server.js 文件的代码:

const nodemailer = require('nodemailer')
const path = require('path')
const express = require('express')
const app = express()
const port = 5000
const cors = require('cors')
app.use(cors())
const bodyParser = require('body-parser')
app.use(bodyParser.json())
// to support JSON-encoded bodies
app.use(
  bodyParser.urlencoded({
    // to support URL-encoded bodies
    extended: true
  })
)

app.get('/home', (req, res) => {
  console.log(
    'Hello from .get /home',
    req.body.generalDetails,
    req.body.firstName,
    req.body.mName
  )
})

app.post('/home', (req, res) => {


  var express = require('express'),
  nodemailer = require("nodemailer");

  app = express.createServer();

  app.use(express.bodyParser());

  app.post('/formProcess', function (req, res) {
      var data=req.body;

      var smtpTransport = nodemailer.createTransport("SMTP",{
         service: "Gmail",
         auth: {
         user: "thomas.hunt@careertrackers.org.au",
         pass: "pass"
         }});

     smtpTransport.sendMail({  //email options
     from: "email",
     to: "thomas.hunt@careertrackers.org.au", // receiver
     subject: "Emailing with nodemailer", // subject
     text:req.body.generalDetails,
     html: "here your data goes"// body (var data which we've declared)
      }, function(error, response){  //callback
           if(error){
             console.log(error);
          }else{
             console.log("Message sent: " + res.message);
         }

     smtpTransport.close();
      }); });

  let data = [{
    //page one data
    generalDetails: req.body.generalDetails,
    fName: req.body.fName,
    mName: req.body.mName,
    lName: req.body.lName,
    email: req.body.email,
   }];

   res.json(data);

 }

);

app.listen(port, () => `Server running on port ${port}`);

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    我认为您对 http 模块感到困惑。替换你的

    app = express.createServer();
    

    app = express();
    

    如果你想使用createServer,你应该这样做

    const http = require('http');
    const express = require('express');
    var app = express();
    
    ... your route config
    
    var server = http.createServer(app)
    server.listen(3000, function () {
      console.log('Express is running on port 3000')
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-10
      • 2017-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-03
      • 2020-07-12
      • 2020-07-14
      相关资源
      最近更新 更多