'How to solve TypeError: request.write is not a function

I am trying to make a newsLetter service using NodeJS & Express by using mailchimp API on hyper shell. I have installed all necessary things including npm,express,request,https module. The code works fine untill when i try to write the user Information in the mailChimp server and showing me the typeError message: request.write() is not a function. Below is my code & the snap of my errorCode.

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");
});

Error Message Pictureenter image description here



Solution 1:[1]


res.write(jsonData)

res.end()

use above code instead of request.write(jsonData), request.end().

Solution 2:[2]

https.request(url, options, function (response) {
response.on("data", function (data) {
  console.log(JSON.parse(data));
});   });

instead use this:

const request = https.request(url, options, function (response) {
response.on("data", function (data) {
  console.log(JSON.parse(data));
});

});

Solution 3:[3]

As already specified by Lingyu Kong, you need to save your request in a constant variable that will allow you to call upon it later:

The node.js website link below illustrates this perfectly:

https://nodejs.org/api/http.html#http_http_request_url_options_callback

Solution 4:[4]

You should have saved the ClientRequest into a variable called request, and after that, you could do the write and end.

Like that :

const request = https.request(url, options, function (response) {
   response.on("data", function (data) {
   console.log(JSON.parse(data));
});

Solution 5:[5]

You forgot to put in

const request = https.request(url, options, function(response) {
        response.on("data", function(data) {
            console.log(JSON.parse(data));

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 Lingyu Kong
Solution 3 Nosike Adasolum
Solution 4
Solution 5 Birhan Nega