【问题标题】:How to solve TypeError: request.write is not a function如何解决 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 身份验证代码,您可能应该更改它。

标签: javascript node.js json express mailchimp-api-v3.0


【解决方案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,所以请把它重新格式化为一个普通的代码块。
      猜你喜欢
      • 2018-09-01
      • 2018-11-14
      • 2021-07-02
      • 2021-08-12
      • 1970-01-01
      • 1970-01-01
      • 2014-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多