Javascript 然后使用Nodejs发送res

Javascript 然后使用Nodejs发送res,javascript,node.js,Javascript,Node.js,我是node.js的初学者,我正在尝试使用。然后从nodejs Admin.js const convert = require("../Services/Convert"); convert.video(myfile, videoid).then((data) => { const mymessage = data.data.message; if (!mymessage.msgError) {

我是
node.js
的初学者,我正在尝试使用。然后从
nodejs

Admin.js

const convert = require("../Services/Convert");

convert.video(myfile, videoid).then((data) => {
            const mymessage = data.data.message;
            if (!mymessage.msgError) {
              console.log("GOOD")
            }
          });
Convert.js

const multer = require("multer");
const fs = require("fs"),
  cloudconvert = new (require("cloudconvert"))(
    "MjeYEgD8sZF7XIjvYftBirpmMJlsktjOSlL3RAogTr4VVXjRfWOS6dwTpa0Y19V9"
  );

module.exports = {
  video: (myfile, videoid) => {
    const ucuk = myfile;
    return fs
      .createReadStream(ucuk.path)
      .pipe(
        cloudconvert.convert({
          inputformat: "mp4",
          outputformat: "mp3",
          input: "upload",
        })
      )
      .pipe(fs.createWriteStream("./upload/" + videoid + ".mp3"))
      .on("finish", function () {
        res.status(400).json({
          message: { msgError: true },
        });
      });
  },
};
这就是结果

events.js:292
      throw er; // Unhandled 'error' event
      ^

TypeError: convert.video(...).then is not a function

有人能给我解释一下为什么这是一个错误,以及如何修复它吗?谢谢:)

目前还不完全清楚错误是如何处理的,也不清楚事件“finish”为什么是错误的,但您需要返回一个
承诺
才能在
视频()
上使用
then()
。比如:

const multer = require("multer");
const fs = require("fs"),
  cloudconvert = new (require("cloudconvert"))(
    "MjeYEgD8sZF7XIjvYftBirpmMJlsktjOSlL3RAogTr4VVXjRfWOS6dwTpa0Y19V9"
  );

module.exports = {
  video: (myfile, videoid) => {
    return new Promise((resolve, reject) => {
      const ucuk = myfile;
      return fs
        .createReadStream(ucuk.path)
        .pipe(
          cloudconvert.convert({
            inputformat: "mp4",
            outputformat: "mp3",
            input: "upload",
          })
        )
        .pipe(fs.createWriteStream("./upload/" + videoid + ".mp3"))
        .on("error", function(err) {
          reject(err); // use with `catch`
          return res.status(400).json({
            message: { msgError: true },
          });
        })
        .on("finish", function () {
          // finish is success?
          // if not, put resolve into whatever event is success
          resolve(); // to be able to use `then`
          return res.status(200).json({
            message: 'OK',
          });
        });
    });
  },
};

希望这有帮助

为什么我会犯这个错误,兄弟?res.status(400).json({^TypeError:无法读取undefinedOkay的属性'status',是的,这是因为
res
在您的任何文件中都不存在。您需要以某种方式使
res
可用。也许可以将路由处理程序代码添加到您的问题中,例如在其中指定路径、方法和中间件。您使用什么来处理e请求和响应?快车?嘿,兄弟,你能帮我吗?为了进一步提供帮助,你需要提供如何设置快车路线。请用路线代码更新你的问题。