【问题标题】:How do I make propper exports in nodeJS如何在节点 JS 中正确导出
【发布时间】:2021-10-10 18:47:03
【问题描述】:

我想获取包含从路由到控制器的文件路径的变量。例如。对于路由器:

exports.file_path = (req, res) => {
    var file_path = storage;
    return file_path;
}

例如。对于控制器:

const { file_path } = require('../routes/auth');

这是尝试让我的 STORAGE 变量从 routes.js 到 controller.js 的组合之一,但我最终比开始时更加困惑。有没有人知道怎么做?

我得到的错误:

throw new Error(msg);
        ^

Error: Route.post() requires a callback function but got a [object Undefined]

我已经尝试了一些解决方案,但我无法让它们发挥作用:

Error: .post() requires callback functions but got a [object Undefined] not working Route.get() requires a callback function but got a [object Undefined]. What did I do wrong? ...

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    不要解构你导出的回调函数:

    const file_path_cb = require('../routes/auth');

    【讨论】:

    • 感谢答案,但它仍然给出相同的错误
    【解决方案2】:

    我自己刚刚解决了这个错误,我将提供代码来说明我是如何修复它的。

    首先,我这里有 3 个文件在播放。

    • index.js(调用 API 的文件)
    • 用户路由器(发帖的地方)
    • 用户控制(其中定义了帖子的详细信息)

    此文件引发了错误,特别是第 5 行,我正在导入路由器。

    //index.js
    const express = require("express");
    const cors = require("cors");
    
    const db = require("./db/connection");
    const userRouter = require("./routes/user-router");    //PROBLEMATIC LINE
    
    const app = express();
    const apiPort = 3000;
    
    app.use(express.urlencoded({ extended: true }));
    app.use(cors());
    app.use(express.json());
    
    db.on("error", console.error.bind(console, "MongoDB connection error:"));
    
    app.get("/", (req, res) => {
      res.send("Hello World!");
    });
    
    app.use("/api", userRouter);
    

    显然,post 函数是引发错误的原因。但是,在阅读this Stack Overflow thread 之后,我了解到问题与文件之间的连接有关 - 函数的导入和导出。这导致我查看了控制文件夹。

    //user-router.js
    const express = require("express");
    
    const UserCtrl = require("../control/user-control");     //PROBLEMATIC LINE (2)
    
    const router = express.Router();
    
    router.post("/user", UserCtrl.createUser);               //PROBLEMATIC LINE(1) 
    
    module.exports = router;
    

    我发现 module.exports 行是问题所在。我需要做的是用大括号将导出包起来,问题就消失了。

    //user-controller.js
    const User = require("../models/user-model");
    
    createUser = async (req, res) => {
      //...
    };
    
    //module.exports = createUser;               //PROBLEMATIC LINE
    module.exports = { createUser };             //This fixed the problem
    

    我希望通过向您展示我的问题的全部细节,您能够解决您的问题。另外,我希望通过我有限的知识来尝试回答一个问题,我可以建立一些声誉点,以便我能够回应cmets之类的,LOL。如果这对您有帮助,请告诉我。

    【讨论】:

      猜你喜欢
      • 2018-03-11
      • 1970-01-01
      • 2018-09-20
      • 1970-01-01
      • 2017-05-04
      • 2021-06-11
      • 1970-01-01
      • 2016-11-12
      • 1970-01-01
      相关资源
      最近更新 更多