nodejs/express express.createserver 不是函数
Posted
技术标签:
【中文标题】nodejs/express express.createserver 不是函数【英文标题】:nodejs/express express.createserver is not a function 【发布时间】: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`);
【问题讨论】:
【参考方案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')
)
【讨论】:
以上是关于nodejs/express express.createserver 不是函数的主要内容,如果未能解决你的问题,请参考以下文章
安装nodeJs静态服务器(NodeJs Express MVC 框架)
用户未定义:Nodejs/Express + Passport