如何解决 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”)?

如何解决 TypeError:'numpy.ndarray' 对象在 Python 上不可调用

如何解决 TypeError:'int' 和 'str' 的实例之间不支持'<'?