如何解决TypeError: Cannot read properties of undefined (reading 'fName')错误
解决TypeError: Cannot read properties of undefined (reading 'fName')错误
下面是导致错误的核心问题及修正方案:
路由回调参数顺序颠倒:
app.post("/")的回调函数参数顺序写反了,Express路由回调的标准顺序是(req, res),你写成了(res, req),导致req被赋值为响应对象,实际请求对象变成了res,自然读取不到req.body.fName。
修正代码:app.post("/", function(req, res){ const fName = req.body.fName; const lName = req.body.lName; const email = req.body.email; // 后续逻辑 });变量名不匹配:你定义的变量是
fName和lName,但在merge_fields里误用了未定义的firstName和lastName,这会引发新的ReferenceError,需修正为对应变量:merge_fields:{ FNAME: fName, LNAME: lName }拼写错误:
merge_feilds拼写错误,正确拼写是merge_fields(注意是fields而非feilds)。JSON序列化方法错误:
JSONstringify(data)缺少点号,正确写法是JSON.stringify(data)。变量重名冲突:你已引入
request模块,又在回调中声明同名变量const request = https.request(...),会覆盖模块引用,建议修改为其他名称,比如mailchimpRequest:const mailchimpRequest = https.request(url, options, function(response){ response.on("data", function(data){ console.log(JSON.parse(data)) }) }) mailchimpRequest.write(Jsondata); mailchimpRequest.end();
修正后的完整代码
const express = require("express"); const bodyParser = require("body-parser"); const request = require("request"); const https = require("https"); const app = express(); app.use(express.static("public")); app.use(bodyParser.urlencoded({extended: true})); app.get("/", function(req, res){ res.sendFile(__dirname + "/signup.html") }); app.post("/", function(req, res){ const fName = req.body.fName; const lName = req.body.lName; const email = req.body.email; const data = { members : [ { email_address: email, status: "subscribed", merge_fields:{ FNAME: fName, LNAME: lName } } ] }; const Jsondata = JSON.stringify(data); const url = "https://us21.api.mailchimp.com/3.0/lists/eca64732d1"; const options= { method: "POST", auth:"string1:60ca81db08a41da8672a40261c9d7afd-us21" }; const mailchimpRequest = https.request(url, options, function(response){ response.on("data", function(data){ console.log(JSON.parse(data)) }) }) mailchimpRequest.write(Jsondata); mailchimpRequest.end(); }); app.listen(3000, function(){ console.log("server is running on port 3000"); });
内容的提问来源于stack exchange,提问作者Hamzacreator
相关产品推荐
相关产品推荐

