如何解决 TypeError: request.write is not a function
Posted
技术标签:
【中文标题】如何解决 TypeError: request.write is not a function【英文标题】:How to solve TypeError: request.write is not a function 【发布时间】:2021-06-22 00:50:08 【问题描述】:我正在尝试通过在超级外壳上使用 mailchimp API 来使用 NodeJS 和 Express 来制作 newsLetter 服务。我已经安装了所有必要的东西,包括 npm、express、request、https 模块。代码工作正常,直到我尝试在 mailChimp 服务器中写入用户信息并向我显示 typeError 消息:request.write() 不是函数。下面是我的代码和我的错误代码的快照。
const express = require("express");
const app = express();
const bodyParser = require("body-parser");
const request = require("request");
const https = require("https");
app.use(bodyParser.urlencoded( extended: true ));
app.use(express.static("public"));
app.get("/", function (req, res)
res.sendFile(__dirname + "/signup.html");
);
app.post("/", function (req, res)
const firstName = req.body.fname;
const lastName = req.body.lname;
const email = req.body.email;
const password = req.body.pass;
const cPassword = req.body.cPass;
//console.log(firstName);
//res.send(firstName);
var data =
members: [
email_address: email,
status: "subscribed",
merge_fields:
FNAME: firstName,
LNAME: lastName
]
;
const jsonData = JSON.stringify(data);
const url = "https://us1.api.mailchimp.com/3.0/lists/97d15bb1ff";
const options =
method: "POST",
auth: "Mr.M:d2f2f965b9e6b751a305bb6ce2ad7ed4-us1",
;
https.request(url, options, function (response)
response.on("data", function (data)
console.log(JSON.parse(data));
);
);
request.write(jsonData);
request.end();
//res.send("hey")
);
app.listen(3000, function ()
console.log("Server is running at port 3000");
);
错误信息图片
【问题讨论】:
既然您在此处发布了 MailChimp 身份验证代码,您可能应该更改它。 【参考方案1】:res.write(jsonData)
res.end()
使用上面的代码代替 request.write(jsonData), request.end()。
【讨论】:
谢谢!我摆脱了当前的错误消息,代码现在运行顺利,尽管主要是向 mailchimp 受众添加订阅者,但仍然没有发生。【参考方案2】:https.request(url, options, function (response)
response.on("data", function (data)
console.log(JSON.parse(data));
); );
改用这个:
const request = https.request(url, options, function (response)
response.on("data", function (data)
console.log(JSON.parse(data));
);
);
【讨论】:
【参考方案3】:正如 Lingyu Kong 已经指定的,您需要将您的请求保存在一个常量变量中,以便您稍后调用它:
下面的 node.js 网站链接完美地说明了这一点:
https://nodejs.org/api/http.html#http_http_request_url_options_callback
【讨论】:
【参考方案4】:你应该将ClientRequest保存到一个名为request的变量中,然后你就可以进行写入和结束了。
像这样:
const request = https.request(url, options, function (response)
response.on("data", function (data)
console.log(JSON.parse(data));
);
【讨论】:
您已将您的解决方案设置为可运行的代码 sn-p。但是,它不是这样一个可运行的sn-p,所以请把它重新格式化为一个普通的代码块。以上是关于如何解决 TypeError: request.write is not a function的主要内容,如果未能解决你的问题,请参考以下文章
TypeError: Cannot read property 'scrollIntoView' of null 如何解决?
如何解决“TypeError:process.getuid 不是函数”
将 Bot 部署到 Heroku 时如何解决 TypeError?
如何解决:TypeError:null 不是对象(评估“AgoraRtcChannelModule.prefix”)?