【问题标题】:Unable to track the issue this.stack.push(layer); in node.js无法跟踪问题 this.stack.push(layer);在 node.js 中
【发布时间】:2020-12-04 22:04:49
【问题描述】:
this is my code 
usercontroller:-
const {hashSync,genSaltSync}=require('bcrypt');
const {create}=require('./user.service');
module.exports={
    createUser:(req,res)=>{
        const body=req.body;
        const salt=genSaltSync(10);
        body.password=hashSync(body.password,salt);
        create(body,(error,results)=>{
            if(error){
                return res.status(500).json(
                    {
                        success:0,
                        message : "Database connection error"
                    }
                );
            }
            return res.status(200).json({
                status:200,
                data:results
            });
        })
    }

}

userservice:-
const pool=require("../config/database")
module.exports={
    create: (data,callback)=>{
        pool.query(
            `insert into registration(firstName,lastName,gender,email,password,number)
                values(?,?,?,?,?,?)`,
                [
                    data.first_name,
                    data.last_name,
                    data.gender,
                    data.email,
                    data.password,
                    data.number
                ],
                (error,results,fields) =>
                {
                    if(error)
                    {
                        return callback(error);
                    }
                    else{
                        return callback(null,results);
                    }
                }
        );
    }
}
userrouter:-
const {createUser} = require("../users/user.controller")
const {createUser}=require("./user.controller")
const router=require("express").Router;
router.post("/",createUser);
module.exports=router;

app.js
require("dotenv").config();
const express = require("express")
const app=express();
const userrouter=require('./users/user.router')

app.use("/api/users",userrouter);
app.listen(process.env.APP_PORT,()=>{
    console.log("server up and running")
});


.env
APP_PORT=3000
DB_PORT=3306
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=divyanshu123
MYSQL_DB=test

我无法运行它得到错误:-

[nodemon] 2.0.4 【nodemon】随时重启,输入rs [nodemon] 观看路径:. [nodemon] 看扩展:js,mjs,json [nodemon] 开始node app.js C:\Users\Divyanshu Thakur\Desktop\Jwt\node_modules\express\lib\router\index.js:502 this.stack.push(layer); ^

TypeError:无法读取未定义的属性“推送” 在 Function.route (C:\Users\Divyanshu Thakur\Desktop\Jwt\node_modules\express\lib\router\index.js:502:14) 在 Function.proto 中。 [作为帖子] (C:\Users\Divyanshu Thakur\Desktop\Jwt\node_modules\express\lib\router\index.js:509:22) 在对象。 (C:\Users\Divyanshu Thakur\Desktop\Jwt\users\user.router.js:4:8) 在 Module._compile (internal/modules/cjs/loader.js:1133:30) 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:1153:10) 在 Module.load (internal/modules/cjs/loader.js:977:32) 在 Function.Module._load (internal/modules/cjs/loader.js:877:14) 在 Module.require (internal/modules/cjs/loader.js:1019:19) 在要求(内部/模块/cjs/helpers.js:77:18) 在对象。 (C:\Users\Divyanshu Thakur\Desktop\Jwt\app.js:4:18) [nodemon] 应用程序崩溃 - 启动前等待文件更改...

【问题讨论】:

    标签: mysql node.js express


    【解决方案1】:

    改变这个:

    const router=require("express").Router;
    

    到这里:

    const router=require("express").Router();
    

    你必须实际调用工厂函数来创建一个新的路由器。当您尝试这样做时,您的问题就会出现:

    router.post("/",createUser);
    

    或:

    app.use("/api/users",userrouter);
    

    但是,您的对象实际上并不是路由器。

    【讨论】:

    • 这个可以标记为正确答案,有效。
    【解决方案2】:

    不确定这是否是您的问题的根源,但这似乎相当有问题:

    const { createUser } = require("../users/user.controller")
    const { createUser } = require("./user.controller")
    
    

    来自userRouter 文件。

    【讨论】:

    • 我怀疑这实际上不在用户代码中,因为这会产生与用户报告不同的错误。
    猜你喜欢
    • 1970-01-01
    • 2021-06-30
    • 2018-07-25
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    • 2020-09-02
    • 1970-01-01
    相关资源
    最近更新 更多